Mam to w moim pliku SCSS:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
W klasie b chciałbym odziedziczyć wszystkie właściwości i zagnieżdżone deklaracje class-a
. Jak to się robi? Próbowałem użyć @include class-a
, ale to po prostu generuje błąd podczas kompilacji.
inheritance
sass
F21
źródło
źródło
@extend
- są pewne podstępne skutki uboczne, o których powinieneś wiedzieć: stackoverflow.com/questions/30744625/….myclass
nie jest on używany nigdzie indziej (chyba), poza.myotherclass
tym lepiej jest.myclass
zdefiniować jako%myclass
i rozszerzyć.myotherclass
jako@extend %myclass;
. Wygeneruje jako.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Spróbuj tego:
Teraz możesz rozszerzyć% base-class w dowolnej ze swoich klas (np. Moja-klasa).
źródło
Użycie @extend jest dobrym rozwiązaniem, ale pamiętaj, że skompilowany css zniszczy definicję klasy. Wszystkie klasy, które rozszerzają ten sam symbol zastępczy, zostaną zgrupowane razem, a reguły, które nie są rozszerzone w klasie, będą miały osobną definicję. Jeśli kilka klas zostanie rozszerzonych, może stać się niesforne wyszukiwanie selektora w skompilowanym css lub narzędziach programistycznych. Podczas gdy mixin powieli kod mixin i doda wszelkie dodatkowe style.
W tym sassmeister widać różnicę między @extend i @mixin
źródło
źródło
@extend #{'.my-class', '.my-other-class'};
Inną opcją może być użycie Selektora atrybutów:
Podczas gdy każda klasa zaczynająca się od „your-class-name” używa tego stylu.
W twoim przypadku możesz to zrobić w następujący sposób:
Więcej informacji o selektorach atrybutów w w3Schools
źródło