Mukautettujen varianttien lisääminen pluginilla
Luokaa addVariant-funktiolla mukautettuja tilavariantteja, joilla kohdistetaan valitsimiin, kuten .is-active, tai data-määritteisiin, ja käyttäkää niitä luokkien etuliitteinä merkkauskielessä.
Mukautettujen varianttien lisääminen pluginilla on ilmainen Tailwind CSS Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tailwind CSS Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tailwind CSS Academy-kurssilla on yhteensä 4 oppituntia.
Mitä Tailwind-variantit ovat?
Tailwindin variantit ovat etuliitteitä, kuten hover:, focus:, dark: ja sm:, jotka käyttävät utility-luokkaa ehtoon perustuen. Kukin variantti ympäröi tuotetun CSS:n selektorilla tai media queryllä. addVariant-plugin-apufunktion avulla voitte rekisteröidä omia varianttien etuliitteitä ja kirjoittaa HTML:ään esimerkiksi aria-selected:bg-blue-100-, data-active:opacity-100- tai is-loading:cursor-wait-luokkia.
addVariant-apufunktio
addVariant ottaa kaksi argumenttia: variantin nimen eli kaksoispistettä edeltävän etuliitteen ja selektorimallimerkkijonon. Selektori käyttää &-merkkiä tuotetun luokkaselektorin paikanhaltijana. Kun käyttäjä kirjoittaa hocus:bg-gray-100, Tailwind korvaa &-merkin luokan bg-gray-100 tuotetulla luokkaselektorilla ja ympäröi sen määrittämällänne selektorimallilla.
const plugin = require('tailwindcss/plugin');
plugin(function({ addVariant }) {
// 'hocus' = hover OR focus (useful for touch/keyboard parity)
addVariant('hocus', ['&:hover', '&:focus']);
// Usage in markup:
// <button class='hocus:bg-blue-100 hocus:text-blue-700'>
// This button highlights on both hover and focus
// </button>
})Data-attribuuttivariantit
Yksi mukautettujen varianttien käytännöllisimmistä käyttötavoista on data-attribuuttien kohdentaminen. Monet käyttöliittymäkirjastot, kuten Alpine.js, Headless UI ja Stimulus, välittävät tilan data-*-attribuuttien kautta. Mukautettujen varianttien avulla voitte käyttää Tailwind-luokkia näiden attribuuttien perusteella ja pitää kaiken tyylityksen HTML:n luokkaluettelossa sen sijaan, että yhdistäisitte CSS:n ja attribuuttiselektorit tyylitiedostossa.
plugin(function({ addVariant }) {
// Target elements with data-active='true'
addVariant('data-active', '&[data-active='true']');
// Target elements with data-state='open'
addVariant('open', '&[data-state='open']');
// Target disabled attribute (not just :disabled pseudo-class)
addVariant('ui-disabled', '&[aria-disabled='true']');
})
// Usage:
// <div data-state='open' class='open:bg-blue-50 open:border-blue-200'>
// <button aria-disabled='true' class='ui-disabled:opacity-50 ui-disabled:cursor-not-allowed'>Vanhemman tilan variantit
Tailwindissa on sisäänrakennetut group- ja peer-mallit, mutta joskus elementit on kohdistettava tietyn luokan tai attribuutin sisältävän vanhemman perusteella. :where()-funktiota tai suoraa esi-isäsyntaksia käyttävillä mukautetuilla varianteilla voitte ilmaista nämä suhteet. addVariant-selektorissa vanhempiin elementteihin voidaan viitata käyttämällä .parent-class &-malleja.
plugin(function({ addVariant }) {
// Apply when an ancestor has .is-dragging class
addVariant('dragging', '.is-dragging &');
// Apply when the form has [data-submitting] attribute
addVariant('submitting', '[data-submitting] &');
// Apply when the theme container is in .dark mode
addVariant('dark-mode', '.dark &');
})
// Usage:
// <form data-submitting>
// <input class='submitting:opacity-50 submitting:cursor-wait' />
// <button class='submitting:bg-gray-400 submitting:pointer-events-none'>
// Submit
// </button>
// </form>nth-Child- ja nth-of-Type-variantit
CSS:n :nth-child()- ja :nth-of-type()-pseudoselektorit mahdollistavat tyylityksen luettelon sijainnin perusteella. Tailwind sisältää odd:- ja even:-variantit, mutta ei kaikkia :nth-child-lausekkeita. Lisätkää mukautettuja variantteja toistuvasti käyttämiänne malleja varten, kuten first-three: kolmelle ensimmäiselle luettelokohteelle tai last-two: kahdelle viimeiselle.
plugin(function({ addVariant }) {
// First 3 items
addVariant('first-3', '&:nth-child(-n+3)');
// Every 3rd item
addVariant('third', '&:nth-child(3n)');
// Only child
addVariant('only', '&:only-child');
// Not the first child
addVariant('not-first', '&:not(:first-child)');
// Not the last child
addVariant('not-last', '&:not(:last-child)');
})
// Usage:
// <ul>
// <li class='first-3:font-bold not-last:border-b'>Item 1</li>
// <li class='first-3:font-bold not-last:border-b'>Item 2</li>
// <li class='first-3:font-bold not-last:border-b'>Item 3</li>
// </ul>Yhdistelmävariantit
addVariant-funktion toinen argumentti hyväksyy taulukon selektoreita. Kun taulukko annetaan, jokaisesta selektorista tulee erillinen sääntö, joten mikä tahansa taulukon selektori aktivoi variantin. Tämä on hyödyllistä yhdistelmävarianteissa, joita tulee käyttää useissa toisiinsa liittyvissä selektoreissa – esimerkiksi kun elementti tyylitetään sen ollessa joko valittuna tai laajennettuna.
plugin(function({ addVariant }) {
// 'selected' applies on aria-selected OR aria-current
addVariant('selected', [
'&[aria-selected='true']',
'&[aria-current='true']',
'&[aria-current='page']'
]);
// 'expanded' applies on open disclosure or expanded accordion
addVariant('expanded', [
'&[aria-expanded='true']',
'&[data-state='open']'
]);
})
// Usage:
// <a class='selected:bg-blue-50 selected:text-blue-700 expanded:rotate-180'>Pseudoelementtivariantit
Voitte lisätä variantteja, jotka kohdistuvat pseudoelementteihin, kuten ::before, ::after, ::placeholder ja ::selection. Selektorimalli käyttää pseudoelementeille muotoa &::. Yhdistettynä Tailwindin sisältöutilityihin pseudoelementtivariantit mahdollistavat CSS-pohjaiset koriste-elementit ilman ylimääräistä HTML-merkintää.
plugin(function({ addVariant }) {
// ::after pseudo-element variant
addVariant('after', '&::after');
// ::before pseudo-element variant
addVariant('before', '&::before');
// ::selection (text selection styling)
addVariant('selection', '&::selection');
})
// Usage (combine with content utility for decorative elements):
// <div class="
// relative
// after:content-[''] after:absolute after:inset-0
// after:bg-gradient-to-t after:from-black/50 after:to-transparent
// after:rounded-xl after:pointer-events-none
// ">Media query -variantit
Mukautetut variantit voivat myös ympäröidä utilityt media queryillä, jotka eivät kuulu Tailwindin oletusarvoisiin katkaisupisteisiin. Käyttäkää tätä esimerkiksi ominaisuuksiin prefers-reduced-motion, prefers-contrast tai mukautettuihin DPI-kyselyihin. Välittäkää media query -merkkijono addVariant-funktion toisena argumenttina @media-syntaksia käyttäen.
plugin(function({ addVariant }) {
// Prefers reduced motion variant
addVariant('motion-reduce', '@media (prefers-reduced-motion: reduce)');
// High contrast mode
addVariant('contrast-high', '@media (prefers-contrast: high)');
// Print media
addVariant('print', '@media print');
// Pointer: coarse (touch devices)
addVariant('touch', '@media (pointer: coarse)');
})
// Usage:
// <div class='motion-reduce:transition-none motion-reduce:animate-none'>
// <button class='touch:py-4 touch:text-lg'>Larger on touch</button>Saavutettavuuden ARIA-attribuuttivariantit
ARIA-attribuutit ovat ensisijainen tapa, jolla avustavat teknologiat välittävät tilatietoa. Yleisiä ARIA-tiloja varten rakennettujen mukautettujen varianttien avulla voitte kirjoittaa saavutettavuuteen perustuvat tyylit suoraan HTML:ään. Tailwind v3.2+ lisäsi joitakin sisäänrakennettuja ARIA-variantteja (aria-checked:, aria-selected:), mutta voitte laajentaa niitä millä tahansa käyttöliittymäkomponenttienne käyttämällä ARIA-attribuutilla.
plugin(function({ addVariant }) {
// Custom ARIA variants for component states
addVariant('aria-expanded-true', '&[aria-expanded='true']');
addVariant('aria-pressed', '&[aria-pressed='true']');
addVariant('aria-busy', '&[aria-busy='true']');
addVariant('aria-invalid', '&[aria-invalid='true']');
addVariant('aria-required', '&[aria-required='true']');
})
// Usage:
// <button aria-pressed='true'
// class='aria-pressed:bg-blue-600 aria-pressed:text-white
// aria-busy:opacity-60 aria-busy:cursor-wait'>
// Toggle
// </button>addVariant- ja addUtilities-funktioiden yhdistäminen
Tehokkaimmissa plugineissa yhdistetään addVariant ja addUtilities (tai addComponents) samaan pluginiin. Plugin voi esimerkiksi määrittää selected:-variantin JA joukon .menu-item-komponenttiluokkia, jotka toimivat yhdessä. Toisiinsa liittyvien utilityjen ja varianttien paketoiminen yhteen pluginiin pitää ominaisuuden yhtenäisenä ja helpottaa sen ottamista käyttöön tai poistamista käytöstä kokonaisuutena.
// A complete 'list-nav' plugin
plugin(function({ addVariant, addComponents }) {
// Variant: item is the currently active page
addVariant('nav-active', '&[data-nav-active='true']');
// Component: base nav item style
addComponents({
'.nav-item': {
display: 'flex',
alignItems: 'center',
gap: '0.5rem',
padding: '0.5rem 0.75rem',
borderRadius: '0.5rem',
fontSize: '0.875rem',
fontWeight: '500',
color: '#4b5563',
cursor: 'pointer',
transition: 'background-color 150ms, color 150ms',
'&:hover': { backgroundColor: '#f3f4f6' }
}
});
})
// Usage:
// <a class='nav-item nav-active:bg-blue-50 nav-active:text-blue-700'>Mukautettujen varianttien testaaminen
Varmistakaa mukautettujen varianttien toiminta kirjoittamalla niitä käyttävää HTML:ää, suorittamalla Tailwind CLI ja tarkastelemalla tuloksena olevaa CSS:ää. Tuotetun selektorin tulee vastata addVariant-mallianne. Testatkaa myös, että variantti yhdistyy oikein responsiivisiin etuliitteisiin – md:data-active:bg-blue-100 – ja muihin tilavariantteihin, kuten hover:data-active:bg-blue-200. Jotkin varianttiyhdistelmät voivat tuottaa odottamattomia selektoreita, joten testaamalla varmistatte tuotetun CSS:n vastaavan odotuksianne.
<!-- test.html -->
<div data-active='true'
class='data-active:bg-blue-50 data-active:border-blue-200
hover:data-active:bg-blue-100
md:data-active:bg-blue-200'>
Content
</div>
<button aria-pressed='true'
class='aria-pressed:bg-blue-600 aria-pressed:text-white'>
Toggle
</button>
<!-- Expected generated CSS: -->
/* .data-active\:bg-blue-50[data-active='true'] { background-color: #eff6ff } */
/* @media (min-width: 768px) { .md\:data-active\:bg-blue-200[data-active='true'] { ... } } */Pikatarkistus
Testatkaa, miten hyvin hallitsette tämän oppitunnin Tailwind CSS Mastery -käsitteet.
Oppitunnin kertaus
Tässä oppitunnissa opitte, että addVariant luo mukautettuja luokkaetuliitteitä, jotka ympäröivät utilityt selektorimalleilla tai media queryillä, data-attribuuttivariantit mahdollistavat tyylityksen frameworkin tilan perusteella ilman CSS:n kirjoittamista, ja variantteja voidaan yhdistää taulukoiden avulla usean selektorin kattamiseksi. Seuraavaksi opimme paketoimaan ja julkaisemaan Tailwind-plugineja uudelleenkäyttöä varten eri projekteissa.
Opi HTML tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Mukautettujen varianttien lisääminen pluginilla” ilmainen?
Kyllä – oppitunnin ”Mukautettujen varianttien lisääminen pluginilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tailwind CSS Academy-kurssin, päivitä CoddyKit PROhon. Tailwind CSS Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Mukautettujen varianttien lisääminen pluginilla”?
Luokaa addVariant-funktiolla mukautettuja tilavariantteja, joilla kohdistetaan valitsimiin, kuten .is-active, tai data-määritteisiin, ja käyttäkää niitä luokkien etuliitteinä merkkauskielessä. Harjoittelet Tailwind CSS Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tailwind CSS Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tailwind CSS Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Mukautettujen varianttien lisääminen pluginilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Tailwind CSS Academy-oppitunnilla?
Kyllä. Jokainen Tailwind CSS Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Tailwindin Plugin-rajapinta
- Mukautettujen apuluokkien lisääminen pluginilla
- Mukautettujen varianttien lisääminen pluginilla
- Pluginien julkaiseminen ja uudelleenkäyttö