Warianty
Warianty pozwalają stosować różne wariacje do istniejących reguł, jak wariant hover: z Tailwind CSS.
Przykład
ts
variants: [
// hover:
(matcher) => {
if (!matcher.startsWith('hover:'))
return matcher
return {
// odetnij prefiks `hover:` i przekaż do następnych wariantów i reguł
matcher: matcher.slice(6),
selector: s => `${s}:hover`,
}
},
],
rules: [
[/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
]matcherkontroluje, kiedy wariant jest włączony. Jeśli zwracana wartość jest ciągiem znaków, będzie używana jako selektor do dopasowywania reguł.selectorzapewnia możliwość dostosowywania generowanego selektora CSS.
Pod maską
Zróbmy przegląd tego, co się dzieje podczas dopasowywania dla hover:m-2:
hover:m-2jest ekstrahowany z użyć użytkownikahover:m-2jest wysyłany do wszystkich wariantów do dopasowaniahover:m-2jest dopasowany przez nasz wariant i zwracam-2- wynik
m-2będzie użyty do następnej rundy dopasowywania wariantów - jeśli żaden inny wariant nie jest dopasowany,
m-2przejdzie do dopasowywania reguł - nasza pierwsza reguła zostaje dopasowana i generuje
.m-2 { margin: 0.5rem; } - na końcu stosujemy transformację naszych wariantów do wygenerowanego CSS. W tym przypadku dodaliśmy
:hoverdo hookaselector
W rezultacie zostanie wygenerowany następujący CSS:
css
.hover\:m-2:hover { margin: 0.5rem; }Dzięki temu, m-2 będzie stosowane tylko wtedy, gdy użytkownik najeżdża na element.
Idąc dalej
System wariantów jest bardzo potężny i nie może być w pełni omówiony w tym przewodniku, możesz sprawdzić implementację domyślnego preseta, aby zobaczyć bardziej zaawansowane użycia.