Ich habe dies in meiner SCSS-Datei:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
In Klasse B möchte ich alle Eigenschaften und verschachtelten Deklarationen von erben class-a
. Wie wird das gemacht? Ich habe versucht, zu verwenden @include class-a
, aber das wirft nur einen Fehler beim Kompilieren.
inheritance
sass
F21
quelle
quelle
@extend
finden Sie einige interessante.myclass
wird es nirgendwo anders verwendet (nehme ich an) als.myotherclass
, dann ist es besser, als.myclass
definiert%myclass
und erweitert zu haben.myotherclass
als@extend %myclass;
. Es wird erzeugt als.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Versuche dies:
Jetzt können Sie% base-class in jeder Ihrer Klassen erweitern (z. B. .my-class).
quelle
Die Verwendung von @extend ist eine gute Lösung. Beachten Sie jedoch, dass das kompilierte CSS die Klassendefinition auflöst. Alle Klassen, die denselben Platzhalter erweitern, werden zusammengefasst, und die Regeln, die in der Klasse nicht erweitert werden, werden in einer separaten Definition angezeigt. Wenn mehrere Klassen erweitert werden, kann es unruhig werden, einen Selektor in der kompilierten CSS- oder den Dev-Tools nachzuschlagen. Während ein Mixin den Mixin-Code dupliziert und zusätzliche Stile hinzufügt.
Sie können den Unterschied zwischen @extend und @mixin in diesem Sassmeister sehen
quelle
quelle
@extend #{'.my-class', '.my-other-class'};
Eine andere Option könnte die Verwendung einer Attributauswahl sein:
Während jede Klasse, die mit "Ihr Klassenname" beginnt, diesen Stil verwendet.
In Ihrem Fall könnten Sie es also so machen:
Weitere Informationen zu Attributselektoren in w3Schools
quelle