sass
Erweitern / Vererbung
Suche…
Syntax
-
@extend .<className>
-
@extend .<className>, .<className>
-
@extend .<className> !optional
-
@extend .<className>, .<className> !optional
Parameter
Parameter | Einzelheiten |
---|---|
Klassenname | Die Klasse, die Sie erweitern möchten. |
Bemerkungen
Mit der @extend
Regel von Sass können Sie CSS-Eigenschaften für mehrere Klassen gemeinsam nutzen, um Code DRY zu halten und einfacher zu lesen.
Erweitern Sie eine Klasse
.message
color: white
.message-important
@extend .message
background-color: red
Dadurch werden alle Stile aus .message
und zu .message-important
. Es generiert das folgende CSS:
.message, .message-important {
color: white;
}
.message-important {
background-color: red;
}
Erweitern Sie von mehreren Klassen
.message
color: white
.important
background-color: red
.message-important
@extend .message, .important
Im obigen Code wird @extend
in einer Zeile verwendet, um den Code mehrerer Klassen zu .message-important
hinzuzufügen. Es ist jedoch möglich, einen .message-important
pro Zeile folgendermaßen zu verwenden:
.message-important
@extend .message
@extend .important
Eine dieser Methoden generiert das folgende CSS:
.message, .message-important {
color: white;
}
.important, .message-important {
background-color: red;
}
Verkettung verlängert
.message
color: white
background: black
.message-important
@extend .message
font-weight: bold
.message-error
@extend .message-important
font-style: italic
Dieser Code bewirkt, dass sich .message-error
von .message-important
, was bedeutet, dass er Code sowohl von .message-important
als auch von .message
, da .method-important
von .message
. Daraus ergibt sich folgendes CSS:
.message, .message-important, .message-error {
color: white;
background: black;
}
.message-important, .message-error {
font-weight: bold;
}
.message-error {
font-style: italic;
}
Haftungsausschluss: Stellen Sie sicher, dass die Klasse (n), von der Sie erweitern, nur einmal im Code vorkommen. Andernfalls kann Sass unordentliches, verwundenes CSS generieren.
Optional erweitert
Manchmal möchten Sie, dass ein @extend
optional ist und nicht verlangt, dass die angegebene Klasse in Ihrem Code vorhanden ist.
.message-important
@extend .message !optional
background: red
Dies führt zu folgendem CSS:
.message-important {
background: red;
}
Haftungsausschluss: Dies ist während der Entwicklung hilfreich, wenn Sie möglicherweise noch nicht den gesamten Code geschrieben haben und keine Fehler möchten. Er sollte jedoch in der Produktion entfernt werden, da dies zu unerwarteten Ergebnissen führen kann.
Platzhalter
Manchmal erstellen Sie Klassen, die nicht eigenständig verwendet werden, sondern nur innerhalb anderer Regelsätze erweitert werden. Dies bedeutet, dass die kompilierte CSS-Datei größer ist, als es sein muss. Platzhalter-Selektoren lösen dieses Problem.
Platzhalter-Selektoren ähneln Klassen-Selektoren, verwenden jedoch das Prozentzeichen (%) anstelle des (.) Für Klassen verwendeten. Sie werden nicht im kompilierten CSS angezeigt.
%button {
border: 5px solid black;
border-radius: 5px;
margin: 0;
}
.error-button {
@extend %button;
background-color: #FF0000;
}
.success-button {
@extend %button;
background-color: #00FF00;
}
Dies wird in das folgende CSS übersetzt:
.error-button, .success-button {
border: 5px solid black;
border-radius: 5px;
margin: 0;
}
.error-button {
background-color: #FF0000;
}
.success-button {
background-color: #00FF00;
}
Eltern erweitern
Normalerweise versuchen Sie, das übergeordnete Element wie folgt zu erweitern:
.parent {
style: value;
@extend &;
}
Wird zu einem Fehler führen, der besagt, dass das übergeordnete Element nicht erweitert werden kann. Das macht Sinn, aber es gibt eine Problemumgehung. Speichern Sie einfach den übergeordneten Selektor in einer Variablen.
.parent {
$parent: &;
style: value;
@extend #{&};
}
Im obigen Beispiel ist dies nicht von Vorteil, jedoch können Sie übergeordnete Stile innerhalb eines enthaltenen Mixins umschließen.