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 🤘