Interpolation
Interpolation kann fast überall in einem Sass-Stylesheet verwendet werden, um das Ergebnis eines SassScript-Ausdrucks in einen Teil von CSS einzubetten. Umschließen Sie einfach einen Ausdruck in #{} an einem der folgenden Orte
- Selektoren in Stilregeln
- Eigenschaftsnamen in Deklarationen
- Benutzerdefinierte Eigenschaftswerte
- CSS-At-Rules
@extends- Reine CSS-
@imports - Angeführte oder nicht angeführte Zeichenketten
- Spezialfunktionen
- Namen von reinen CSS-Funktionen
- Lautstarke Kommentare
SCSS-Syntax
@mixin corner-icon($name, $top-or-bottom, $left-or-right) {
.icon-#{$name} {
background-image: url("/icons/#{$name}.svg");
position: absolute;
#{$top-or-bottom}: 0;
#{$left-or-right}: 0;
}
}
@include corner-icon("mail", top, left);
Sass-Syntax
@mixin corner-icon($name, $top-or-bottom, $left-or-right)
.icon-#{$name}
background-image: url("/icons/#{$name}.svg")
position: absolute
#{$top-or-bottom}: 0
#{$left-or-right}: 0
@include corner-icon("mail", top, left)
CSS-Ausgabe
.icon-mail {
background-image: url("/icons/mail.svg");
position: absolute;
top: 0;
left: 0;
}
In SassScriptIn SassScript Permalink
- Dart Sass
- ✓
- LibSass
- ✗
- Ruby Sass
- seit 4.0.0 (unveröffentlicht)
LibSass und Ruby Sass verwenden derzeit eine ältere Syntax zum Parsen von Interpolation in SassScript. Für die meisten praktischen Zwecke funktioniert sie gleich, aber sie kann sich seltsam verhalten, wenn es um Operatoren geht. Weitere Einzelheiten finden Sie in diesem Dokument.
Interpolation kann in SassScript verwendet werden, um SassScript in nicht angeführte Zeichenketten einzufügen. Dies ist besonders nützlich, wenn dynamisch Namen generiert werden (z. B. für Animationen) oder wenn schrägstrichgetrennte Werte verwendet werden. Beachten Sie, dass die Interpolation in SassScript immer eine nicht angeführte Zeichenkette zurückgibt .
SCSS-Syntax
@mixin inline-animation($duration) {
$name: inline-#{unique-id()};
@keyframes #{$name} {
@content;
}
animation-name: $name;
animation-duration: $duration;
animation-iteration-count: infinite;
}
.pulse {
@include inline-animation(2s) {
from { background-color: yellow }
to { background-color: red }
}
}
Sass-Syntax
@mixin inline-animation($duration)
$name: inline-#{unique-id()}
@keyframes #{$name}
@content
animation-name: $name
animation-duration: $duration
animation-iteration-count: infinite
.pulse
@include inline-animation(2s)
from
background-color: yellow
to
background-color: red
CSS-Ausgabe
.pulse {
animation-name: inline-uifpe6h;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes inline-uifpe6h {
from {
background-color: yellow;
}
to {
background-color: red;
}
}
💡 Lustige Tatsache
Interpolation ist nützlich zum Einfügen von Werten in Zeichenketten, aber abgesehen davon ist sie in SassScript-Ausdrücken selten notwendig. Sie benötigen sie definitiv *nicht*, um einfach eine Variable in einem Eigenschaftswert zu verwenden. Anstatt color: #{$accent} zu schreiben, können Sie einfach color: $accent schreiben!
⚠️ Vorsicht!
Es ist fast immer eine schlechte Idee, Interpolation mit Zahlen zu verwenden. Interpolation gibt nicht angeführte Zeichenketten zurück, die nicht für weitere Berechnungen verwendet werden können, und sie umgeht die integrierten Schutzmaßnahmen von Sass, um sicherzustellen, dass Einheiten korrekt verwendet werden .
Sass verfügt über eine leistungsstarke Einheitenarithmetik, die Sie stattdessen verwenden können. Anstatt beispielsweise #{$width}px zu schreiben, verwenden Sie $width * 1px – oder noch besser, deklarieren Sie die Variable $width von vornherein in Bezug auf px. Auf diese Weise erhalten Sie, wenn $width bereits Einheiten hat, eine aussagekräftige Fehlermeldung anstelle von kompilierbarem fehlerhaftem CSS.
Quoted StringsQuoted Strings Permalink
In den meisten Fällen fügt Interpolation denselben Text ein, der verwendet würde, wenn der Ausdruck als Eigenschaftswert verwendet würde. Es gibt jedoch eine Ausnahme: Die Anführungszeichen um angeführte Zeichenketten werden entfernt (auch wenn diese angeführten Zeichenketten in Listen stehen). Dies ermöglicht es, angeführte Zeichenketten zu schreiben, die Syntax enthalten, die in SassScript nicht zulässig ist (z. B. Selektoren), und sie in Stilregeln zu interpolieren .
CSS-Ausgabe
.example {
unquoted: string;
}
⚠️ Vorsicht!
Auch wenn es verlockend ist, diese Funktion zum Konvertieren von angeführten Zeichenketten in nicht angeführte Zeichenketten zu verwenden, ist es viel klarer, die string.unquote()-Funktion zu verwenden. Anstatt #{$string} zu schreiben, schreiben Sie string.unquote($string)!