Es muy probable que tengamos en SASS unos estilos para una determinada clase (por ejemplo: .test), pero esta a la vez se utilice en diferentes tipos de selector (p, a, div…) y queremos darle estilos diferentes a cada uno de estos.
Ejemplo de html:
<p class="test">Soy un parrafo</p> <div class="test">Soy un div</div> <a href="#" class="test">Soy un enlace</a>
Vamos a poner a los 3 elementos en negrita para la clase «.test», pero a cada uno de ellos un color diferente en función del tipo selector que sean.
En Sass podemos intentar esto pero NO FUNCIONARÁ:
.test {
font-weight: bold;
p& {
color: blue;
}
div& {
color: green;
}
a& {
color: red;
}
}
Para poder resolver el problema podemos combinar la directiva @at-root junto con la interpolación #{}. Ejemplo:
.test {
font-weight: bold;
@at-root {
p#{&} {
color: blue;
}
div#{&} {
color: green;
}
a#{&} {
color: red;
}
}
}
Y AHORA SÍ, el resultado CSS ya sería:
.test {
font-weight: bold;
}
p.test{
color: blue;
}
div.test{
color: green;
}
a.test{
color: red;
}
Agradezco tu comentario 🤘