Mi piacerebbe implementare qualcosa come il modello BEM nella mia libreria Sass. Ma sto lottando per trovare un modo pulito per farlo.È possibile includere le proprietà principali in una classe Sass estesa?
Ad esempio, desidero dichiarare uno stile 'base' per un elemento comune, e quindi estendere con variazioni utili:
.container {
margin: 10%;
background: #eee;
&-featured {
border: 2px solid #999;
}
}
Il problema è che il generato .container-featured
classe contiene un'unica proprietà border: Sass non include il margine e lo sfondo dalla sua classe 'padre'.
così si finisce per dover raddoppiare sulle classi nel vostro markup per ottenere i risultati desiderati:
<div class="container container-featured">
...
</div>
C'è qualche modo per tirare le proprietà di una classe genitore giù in quella classe modificatore, in modo da può ottenere lo stesso risultato visivo facendo semplicemente riferimento alla classe modificatore nel tuo markup?
<div class="container-featured">
<!-- has margin, background, and border styles via just modifier class -->
</div>
Ho provato con mixins per fare questo, ma le cose si fanno verboso e ripetitivo molto rapidamente:
@mixins container {
margin: 10%;
background: #eee;
}
.container {
@include container;
&-featured {
@include container;
border: 2px solid #999;
}
}
C'è un modo semplice e pulita di raggiungere questo con Sass?
È vero, e il codice CSS non sarà enorme. Modifico la mia risposta – Paleo
Il CSS risultante non è quello che mi aspettavo, ma la soluzione rimane la stessa. Grazie mille, questo è abbastanza semplice da lavorare per me! – markedup
Quindi, come si può fare riferimento a un selettore annidato? cioè 'container__item - mod' quando less is è scritto come' .container {& __ item {& - mod {}}} 'O c'è un modo migliore per nidificare? – Plummer