Breaking Change: CSS-Variablen-Syntax
Ältere Versionen von LibSass und Ruby Sass analysierten benutzerdefinierte Eigenschaftsdeklarationen wie jede andere Eigenschaftsdeklaration und erlaubten den vollen Umfang von SassScript-Ausdrücken als Werte. Dies war jedoch nicht mit CSS kompatibel.
- Dart Sass
- ✓
- LibSass
- seit 3.5.0
- Ruby Sass
- seit 3.5.0
Die CSS-Spezifikation erlaubt fast jede Zeichenkette in benutzerdefinierten Eigenschaftsdeklarationen. Auch wenn diese Werte für keine CSS-Eigenschaft sinnvoll waren, konnten sie über JavaScript abgerufen werden. Als sie als SassScript-Werte analysiert wurden, schlug die Syntax, die gültiges einfaches CSS gewesen wäre, beim Parsen fehl. Zum Beispiel verwendete die Polymer-Bibliothek dies zur Unterstützung von einfachen CSS- Mixins.
SCSS-Syntax
:root {
--flex-theme: {
border: 1px solid var(--theme-dark-blue);
font-family: var(--theme-font-family);
padding: var(--theme-wide-padding);
background-color: var(--theme-light-blue);
};
}
CSS-Ausgabe
:root {
--flex-theme: {
border: 1px solid var(--theme-dark-blue);
font-family: var(--theme-font-family);
padding: var(--theme-wide-padding);
background-color: var(--theme-light-blue);
};
}
Um maximale Kompatibilität mit einfachem CSS zu gewährleisten, erfordern neuere Versionen von Sass, dass SassScript-Ausdrücke in benutzerdefinierten Eigenschaftswerten innerhalb von Interpolation geschrieben werden. Interpolation funktioniert auch für ältere Sass-Versionen und wird daher für alle Stylesheets empfohlen.
SCSS-Syntax
$accent-color: #fbbc04;
:root {
// WRONG, will not work in recent Sass versions.
--accent-color-wrong: $accent-color;
// RIGHT, will work in all Sass versions.
--accent-color-right: #{$accent-color};
}
Sass-Syntax
$accent-color: #fbbc04
:root
// WRONG, will not work in recent Sass versions.
--accent-color-wrong: $accent-color
// RIGHT, will work in all Sass versions.
--accent-color-right: #{$accent-color}
CSS-Ausgabe
:root {
--accent-color-wrong: $accent-color;
--accent-color-right: #fbbc04;
}
⚠️ Vorsicht!
Da Interpolation Anführungszeichen aus zitierten Zeichenketten entfernt, kann es notwendig sein, diese in die meta.inspect()-Funktion einzuschließen, um ihre Anführungszeichen zu erhalten.
SCSS-Syntax
@use "sass:meta";
$font-family-monospace: Menlo, Consolas, "Courier New", monospace;
:root {
--font-family-monospace: #{meta.inspect($font-family-monospace)};
}
Sass-Syntax
@use "sass:meta"
$font-family-monospace: Menlo, Consolas, "Courier New", monospace
:root
--font-family-monospace: #{meta.inspect($font-family-monospace)}
CSS-Ausgabe
:root {
--font-family-monospace: Menlo, Consolas, "Courier New", monospace;
}