Varianter
Varianter låter dig tillämpa vissa variationer på dina befintliga regler, som hover:-varianten från Tailwind CSS.
Exempel
ts
variants: [
// hover:
(matcher) => {
if (!matcher.startsWith('hover:'))
return matcher
return {
// skär av `hover:` prefix och skicka till nästa varianter och regler
matcher: matcher.slice(6),
selector: s => `${s}:hover`,
}
},
],
rules: [
[/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
]matcherkontrollerar när varianten är aktiverad. Om returvärdet är en sträng kommer det att användas som selektor för att matcha reglerna.selectortillhandahåller möjligheten att anpassa den genererade CSS-selektorn.
Under huven
Låt oss göra en genomgång av vad som händer vid matchning av hover:m-2:
hover:m-2extraheras från användares användningarhover:m-2skickas till alla varianter för matchninghover:m-2matchas av vår variant och returnerarm-2- resultatet
m-2kommer att användas för nästa omgång av variantmatchning - om ingen annan variant matchas kommer
m-2sedan att gå till att matcha reglerna - vår första regel matchas och genererar
.m-2 { margin: 0.5rem; } - slutligen tillämpar vi våra varianters transformation på den genererade CSS:en. I detta fall lade vi till
:hoveri början avselector-kroken
Som ett resultat kommer följande CSS att genereras:
css
.hover\:m-2:hover { margin: 0.5rem; }Med detta kan vi få m-2 att tillämpas endast när användaren hovrar över elementet.
Fördjupning
Variantsystemet är mycket kraftfullt och kan inte täckas helt i denna guide, du kan kontrollera standardpresetens implementation för att se mer avancerad användning.