Ich möchte etwas wie das BEM-Modell in meiner Sass-Bibliothek implementieren. Aber ich bemühe mich, einen sauberen Weg zu finden.Ist es möglich, die übergeordneten Eigenschaften in eine erweiterte Sass-Klasse einzuschließen?
Zum Beispiel würde Ich mag einen ‚Basis‘ Stil für ein gemeinsames Element zu erklären, und es dann mit nützlichen Variationen erweitern:
.container {
margin: 10%;
background: #eee;
&-featured {
border: 2px solid #999;
}
}
Das Problem hierbei ist, dass die erzeugte .container-featured
Klasse enthält nur die border property - Sass enthält den Rand und den Hintergrund nicht von seiner übergeordneten Klasse.
So Sie am Ende mit auf Klassen in Ihrem Markup zu verdoppeln um die gewünschten Ergebnisse zu erhalten:
<div class="container container-featured">
...
</div>
Gibt es eine Möglichkeit, die Eigenschaften von einer übergeordneten Klasse nach unten in diese Modifikator Klasse zu ziehen, so dass Sie kann dasselbe visuelle Ergebnis erhalten, wenn Sie nur auf die Modifikatorklasse in Ihrem Markup verweisen?
<div class="container-featured">
<!-- has margin, background, and border styles via just modifier class -->
</div>
Ich habe versucht mit Mixins, dies zu tun, aber die Dinge ausführlich und repetitiven sehr schnell:
@mixins container {
margin: 10%;
background: #eee;
}
.container {
@include container;
&-featured {
@include container;
border: 2px solid #999;
}
}
Gibt es eine einfache, saubere Möglichkeit, dies mit Sass zu erreichen?
Es stimmt, und der CSS-Code wird nicht riesig sein. Ich bearbeite meine Antwort. – Paleo
Das resultierende CSS ist nicht das, was ich erwartet habe, aber die Lösung bleibt gleich. Vielen Dank, das ist einfach genug, um für mich zu arbeiten! – markedup
Also, wie könnte man einen geschachtelten Selektor referenzieren? zB 'container__item - mod', wenn das weniger als' .container {& __ item {& - mod {}}} geschrieben wird. Oder gibt es eine bessere Möglichkeit zu verschachteln? – Plummer