Chciałbym zaimplementować coś podobnego do modelu BEM w mojej bibliotece Sass. Ale walczę, aby znaleźć czysty sposób na zrobienie tego.Czy możliwe jest uwzględnienie właściwości nadrzędnych w rozszerzonej klasie Sass?
Na przykład, chciałbym zadeklarować „bazy” styl wspólny element, a następnie rozszerzyć ją przydatnych odmianach:
.container {
margin: 10%;
background: #eee;
&-featured {
border: 2px solid #999;
}
}
Problemem jest to, że generowane .container-featured
klasa zawiera tylko właściwość border-Sass nie uwzględnia marginesu i tła z klasy "rodzica".
więc skończyć się konieczności podwoić o zajęciach w znacznikach, aby uzyskać pożądane rezultaty:
<div class="container container-featured">
...
</div>
Czy istnieje jakiś sposób, aby wyciągnąć właściwości z klasy nadrzędnej w dół do tej klasy modyfikatorów, więc może uzyskać ten sam efekt wizualny, odwołujący się do klasy modyfikującej w twoim znaczniku?
<div class="container-featured">
<!-- has margin, background, and border styles via just modifier class -->
</div>
Próbowałem za pomocą wstawek to zrobić, ale robi się gadatliwy i powtarzające się bardzo szybko:
@mixins container {
margin: 10%;
background: #eee;
}
.container {
@include container;
&-featured {
@include container;
border: 2px solid #999;
}
}
Czy istnieje prosty, czysty sposobem osiągnięcia tego z Sass?
To prawda, a kod CSS nie będzie olbrzymi. Edytuję swoją odpowiedź. – Paleo
Wynikowy CSS nie jest tym, czego oczekiwałem, ale rozwiązanie pozostaje takie samo. Dziękuję bardzo, to jest dość proste, aby pracować dla mnie! – markedup
Jak można odwoływać się do selektora zagnieżdżonego? tj. 'container__item - mod', gdy less jest zapisany jako' .container {& __ item {& - mod {}}} 'Czy istnieje lepszy sposób zagnieżdżenia? – Plummer