Variantes
Las Variantes te permiten aplicar algunas variaciones a tus reglas existentes, como la variante hover: de Tailwind CSS.
Ejemplo
ts
variants: [
// hover:
(matcher) => {
if (!matcher.startsWith('hover:'))
return matcher
return {
// cortar el prefijo `hover:` y pasarlo a las siguientes variantes y reglas
matcher: matcher.slice(6),
selector: s => `${s}:hover`,
}
},
],
rules: [
[/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
]matchercontrola cuándo se habilita la variante. Si el valor de retorno es una cadena, se usará como el selector para hacer coincidir las reglas.selectorproporciona la disponibilidad de personalizar el selector CSS generado.
Bajo el capó
Hagamos un recorrido de lo que sucedió al hacer coincidir hover:m-2:
hover:m-2se extrae del uso de los usuarioshover:m-2se envía a todas las variantes para hacer coincidenciahover:m-2coincide con nuestra variante y devuelvem-2- el resultado
m-2se usará para la siguiente ronda de coincidencia de variantes - si no se hace coincidir con otra variante,
m-2irá a hacer coincidir las reglas - nuestra primera regla coincide y genera
.m-2 { margin: 0.5rem; } - finalmente, aplicamos la transformación de nuestras variantes al CSS generado. En este caso, anteponemos
:hoveral hookselector
Como resultado, se generará el siguiente CSS:
css
.hover\:m-2:hover { margin: 0.5rem; }Con esto, podríamos tener m-2 aplicado solo cuando los usuarios pasen el cursor sobre el elemento.
Ir más allá
El sistema de variantes es muy poderoso y no se puede cubrir completamente en esta guía, puedes consultar la implementación del preset por defecto para ver usos más avanzados.