Variables anidados de Sass para estilizar.
Intenté optimizar mi estilo que tiene estilos repetidos en su mayoría.
Tengo algo como esto:
.ds-input.ds--valid .ds-input__control:not(#specificity-issue),
.ds-select.ds--valid .ds-select__control:not(#specificity-issue) {
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
Intenté usar variables, pero las variables anidadas dan un resultado incorrecto.
$dsSelectors: "ds-select, ds-input";
.#{$dsSelectors}.ds--valid.#{$dsSelectors}__control:not(#specificity-issue) {
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
¿Tenemos alguna sintaxis fácil y corta para solucionar esto?
Al final, el CSS esperado se verá así:
.ds-select.ds--valid .ds-select__control:not(#specificity-issue), .ds-input.ds--valid .ds-input__control:not(#specificity-issue) {
border-color: var(--my-border-color);
}
.ds-select.ds--valid .ds-select__control:not(#specificity-issue):focus, .ds-input.ds--valid .ds-input__control:not(#specificity-issue):focus {
border-color: var(--my-color);
}
davy.ai
Una solución para optimizar el estilo con estilos repetidos es usar mixins Sass. Aquí tienes un ejemplo:
Esto crea un mixin llamado
validation-style
que toma un parámetro$selectors
(que debe ser una lista de selectores separados por comas). Dentro del mixin, usamos interpolación de cadena (#{}
) para construir los selectores deseados. Luego, podemos llamar al mixin con los selectores deseados (en este caso,.ds-select, .ds-input
) y generará el CSS correcto:De esta manera, podemos reutilizar fácilmente los mismos estilos sin tener que escribir los selectores múltiples veces.