sass:meta
- Dart Sass
- seit 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Nur Dart Sass unterstützt derzeit das Laden von integrierten Modulen mit @use. Benutzer anderer Implementierungen müssen Funktionen stattdessen über ihre globalen Namen aufrufen.
MixinsMixins Permalink
meta.apply($mixin, $args...)
- Dart Sass
- seit 1.69.0
- LibSass
- ✗
- Ruby Sass
- ✗
Bindet $mixin mit $args ein. Wenn dies ein @content-Block ist, wird er an $mixin weitergeleitet.
Der $mixin muss ein Mixin-Wert sein, wie er z. B. von meta.get-mixin() zurückgegeben wird.
SCSS-Syntax
@use "sass:meta";
@use "sass:string";
/// Passes each element of $list to a separate invocation of $mixin.
@mixin apply-to-all($mixin, $list) {
@each $element in $list {
@include meta.apply($mixin, $element);
}
}
@mixin font-class($size) {
.font-#{$size} {
font-size: $size;
}
}
$sizes: [8px, 12px, 2rem];
@include apply-to-all(meta.get-mixin("font-class"), $sizes);
Sass-Syntax
@use "sass:meta"
@use "sass:string"
/// Passes each element of $list to a separate invocation of $mixin.
@mixin apply-to-all($mixin, $list)
@each $element in $list
@include meta.apply($mixin, $element)
@mixin font-class($size)
.font-#{$size}
font-size: $size
$sizes: 8px, 12px 2rem
@include apply-to-all(meta.get-mixin("font-class"), $sizes)
CSS-Ausgabe
.font-8px {
font-size: 8px;
}
.font-12px {
font-size: 12px;
}
.font-2rem {
font-size: 2rem;
}
meta.load-css($url, $with: null)
- Dart Sass
- seit 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Nur Dart Sass unterstützt dieses Mixin derzeit.
Lädt das Modul unter $url und bindet dessen CSS ein, als ob es der Inhalt dieses Mixins wäre. Der Parameter $with stellt die Konfiguration für die Module bereit; wenn er übergeben wird, muss es sich um eine Map von Variablennamen (ohne $) zu den Werten dieser Variablen handeln, die im geladenen Modul verwendet werden sollen.
Wenn $url relativ ist, wird er relativ zu der Datei interpretiert, in der meta.load-css() eingebunden wird.
Ähnlich wie die @use-Regel:
-
Dieses wird das angegebene Modul nur einmal auswerten, auch wenn es mehrmals auf unterschiedliche Weise geladen wird.
-
Dies kann einem bereits geladenen Modul keine Konfiguration bereitstellen, unabhängig davon, ob es bereits mit Konfiguration geladen wurde.
Im Gegensatz zur @use-Regel:
-
Dadurch werden keine Member aus dem geladenen Modul im aktuellen Modul verfügbar gemacht.
-
Dies kann überall in einer Stylesheet verwendet werden. Es kann sogar innerhalb von Stilregeln verschachtelt werden, um verschachtelte Stile zu erstellen!
-
Die URL des zu ladenden Moduls kann aus einer Variablen stammen und Interpolation enthalten.
⚠️ Vorsicht!
Der Parameter $url sollte eine Zeichenkette sein, die eine URL enthält, wie Sie sie an die @use-Regel übergeben würden. Es sollte kein CSS url() sein!
SCSS-Syntax
// dark-theme/_code.scss
$border-contrast: false !default;
code {
background-color: #6b717f;
color: #d2e1dd;
@if $border-contrast {
border-color: #dadbdf;
}
}
// style.scss
@use "sass:meta";
body.dark {
@include meta.load-css("dark-theme/code",
$with: ("border-contrast": true));
}
Sass-Syntax
// dark-theme/_code.sass
$border-contrast: false !default
code
background-color: #6b717f
color: #d2e1dd
@if $border-contrast
border-color: #dadbdf
// style.sass
@use "sass:meta"
body.dark
$configuration: ("border-contrast": true)
@include meta.load-css("dark-theme/code", $with: $configuration)
CSS-Ausgabe
body.dark code {
background-color: #6b717f;
color: #d2e1dd;
border-color: #dadbdf;
}
FunktionenFunktionen Permalink
meta.accepts-content($mixin) //=> boolean
- Dart Sass
- seit 1.69.0
- LibSass
- ✗
- Ruby Sass
- ✗
Gibt zurück, ob der angegebene Mixin-Wert einen @content-Block akzeptieren kann.
Dies gibt true zurück, wenn es *möglich* ist, dass das Mixin einen @content-Block akzeptiert, auch wenn es dies nicht immer tut so.
meta.calc-args($calc) //=> list
- Dart Sass
- seit 1.40.0
- LibSass
- ✗
- Ruby Sass
- ✗
Gibt die Argumente für die angegebene Berechnung zurück.
Wenn ein Argument eine Zahl oder eine verschachtelte Berechnung ist, wird es als dieser Typ zurückgegeben. Andernfalls wird es als unquote String zurückgegeben.
SCSS-Syntax
@use 'sass:meta';
@debug meta.calc-args(calc(100px + 10%)); // unquote("100px + 10%")
@debug meta.calc-args(clamp(50px, var(--width), 1000px)); // 50px, unquote("var(--width)"), 1000px
Sass-Syntax
@use 'sass:meta'
@debug meta.calc-args(calc(100px + 10%)) // unquote("100px + 10%")
@debug meta.calc-args(clamp(50px, var(--width), 1000px)) // 50px, unquote("var(--width)"), 1000px
meta.calc-name($calc) //=> quoted string
- Dart Sass
- seit 1.40.0
- LibSass
- ✗
- Ruby Sass
- ✗
Gibt den Namen der angegebenen Berechnung zurück.
SCSS-Syntax
@use 'sass:meta';
@debug meta.calc-name(calc(100px + 10%)); // "calc"
@debug meta.calc-name(clamp(50px, var(--width), 1000px)); // "clamp"
Sass-Syntax
@use 'sass:meta'
@debug meta.calc-name(calc(100px + 10%)) // "calc"
@debug meta.calc-name(clamp(50px, var(--width), 1000px)) // "clamp"
meta.call($function, $args...)
call($function, $args...)
- Dart Sass
- ✓
- LibSass
- seit 3.5.0
- Ruby Sass
- seit 3.5.0
In älteren Versionen von LibSass und Ruby Sass nahm die Funktion call() eine Zeichenkette entgegen, die den Namen einer Funktion darstellte. Dies wurde geändert, um stattdessen einen Funktionswert entgegenzunehmen, in Vorbereitung auf ein neues Modulsystem, in dem Funktionen nicht mehr global sind und ein gegebener Name möglicherweise nicht immer dieselbe Funktion referenziert.
Das Übergeben einer Zeichenkette an call() funktioniert weiterhin in allen Implementierungen, ist aber veraltet und wird in zukünftigen Versionen nicht mehr zulässig sein.
Ruft $function mit $args auf und gibt das Ergebnis zurück.
Die $function muss ein Funktionswert sein, wie er z. B. von meta.get-function() zurückgegeben wird.
SCSS-Syntax
@use "sass:list";
@use "sass:meta";
@use "sass:string";
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@function remove-where($list, $condition) {
$new-list: ();
$separator: list.separator($list);
@each $element in $list {
@if not meta.call($condition, $element) {
$new-list: list.append($new-list, $element, $separator: $separator);
}
}
@return $new-list;
}
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;
.content {
@function contains-helvetica($string) {
@return string.index($string, "Helvetica");
}
font-family: remove-where($fonts, meta.get-function("contains-helvetica"));
}
Sass-Syntax
@use "sass:list"
@use "sass:meta"
@use "sass:string"
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@function remove-where($list, $condition)
$new-list: ()
$separator: list.separator($list)
@each $element in $list
@if not meta.call($condition, $element)
$new-list: list.append($new-list, $element, $separator: $separator)
@return $new-list
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif
.content
@function contains-helvetica($string)
@return string.index($string, "Helvetica")
font-family: remove-where($fonts, meta.get-function("contains-helvetica"))
CSS-Ausgabe
.content {
font-family: Tahoma, Geneva, Arial, sans-serif;
}
meta.content-exists()
content-exists() //=> boolean
Gibt zurück, ob dem aktuellen Mixin ein @content-Block übergeben wurde.
Löst einen Fehler aus, wenn außerhalb eines Mixins aufgerufen.
SCSS-Syntax
@use 'sass:meta';
@mixin debug-content-exists {
@debug meta.content-exists();
@content;
}
@include debug-content-exists; // false
@include debug-content-exists { // true
// Content!
}
Sass-Syntax
@use 'sass:meta'
@mixin debug-content-exists
@debug meta.content-exists()
@content
@include debug-content-exists // false
@include debug-content-exists // true
// Content!
meta.feature-exists($feature)
feature-exists($feature) //=> boolean
Gibt zurück, ob die aktuelle Sass-Implementierung $feature unterstützt.
Das $feature muss eine Zeichenkette sein. Die aktuell anerkannten Funktionen sind
global-variable-shadowing, was bedeutet, dass eine lokale Variable eine globale Variable überschattet, es sei denn, sie hat das Flag!global.extend-selector-pseudoclass, was bedeutet, dass die@extend-Regel Selektoren beeinflusst, die in Pseudoklassen wie:not()verschachtelt sind.units-level3, was bedeutet, dass die Einheitenarithmetik Einheiten unterstützt, die in CSS Values and Units Level 3 definiert sind.at-error, was bedeutet, dass die@error-Regel unterstützt wird.custom-property, was bedeutet, dass Werte von Custom Property Deklarationen keine anderen Ausdrücke als Interpolation unterstützen.
Gibt false für jede nicht erkannte $feature zurück.
⚠️ Vorsicht!
Diese Funktion ist veraltet und sollte vermieden werden. Siehe die Seite mit Breaking Changes für Details.
SCSS-Syntax
@use "sass:meta";
@debug meta.feature-exists("at-error"); // true
@debug meta.feature-exists("unrecognized"); // false
Sass-Syntax
@use "sass:meta"
@debug meta.feature-exists("at-error") // true
@debug meta.feature-exists("unrecognized") // false
meta.function-exists($name, $module: null)
function-exists($name) //=> boolean
Gibt zurück, ob eine Funktion namens $name definiert ist, entweder als integrierte Funktion oder als benutzerdefinierte Funktion.
Wenn $module übergeben wird, prüft dies auch das Modul mit dem Namen $module auf die Funktionsdefinition. $module muss eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht.
SCSS-Syntax
@use "sass:meta";
@use "sass:math";
@debug meta.function-exists("div", "math"); // true
@debug meta.function-exists("scale-color"); // true
@debug meta.function-exists("add"); // false
@function add($num1, $num2) {
@return $num1 + $num2;
}
@debug meta.function-exists("add"); // true
Sass-Syntax
@use "sass:meta"
@use "sass:math"
@debug meta.function-exists("div", "math") // true
@debug meta.function-exists("scale-color") // true
@debug meta.function-exists("add") // false
@function add($num1, $num2)
@return $num1 + $num2
@debug meta.function-exists("add") // true
meta.get-function($name, $css: false, $module: null)
get-function($name, $css: false, $module: null) //=> function
Gibt den Funktionswert namens $name zurück.
Wenn $module null ist, wird die Funktion namens $name ohne Namespace zurückgegeben (einschließlich globaler integrierter Funktionen). Andernfalls muss $module eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht. In diesem Fall wird die Funktion in diesem Modul namens $name zurückgegeben.
Standardmäßig wird ein Fehler ausgelöst, wenn $name keine Sass-Funktion referenziert. Wenn $css jedoch true ist, wird stattdessen eine einfache CSS Funktion zurückgegeben.
Das zurückgegebene Mixin kann mit meta.apply() eingebunden werden.
SCSS-Syntax
@use "sass:list";
@use "sass:meta";
@use "sass:string";
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@function remove-where($list, $condition) {
$new-list: ();
$separator: list.separator($list);
@each $element in $list {
@if not meta.call($condition, $element) {
$new-list: list.append($new-list, $element, $separator: $separator);
}
}
@return $new-list;
}
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;
.content {
@function contains-helvetica($string) {
@return string.index($string, "Helvetica");
}
font-family: remove-where($fonts, meta.get-function("contains-helvetica"));
}
Sass-Syntax
@use "sass:list"
@use "sass:meta"
@use "sass:string"
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@function remove-where($list, $condition)
$new-list: ()
$separator: list.separator($list)
@each $element in $list
@if not meta.call($condition, $element)
$new-list: list.append($new-list, $element, $separator: $separator)
@return $new-list
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif
.content
@function contains-helvetica($string)
@return string.index($string, "Helvetica")
font-family: remove-where($fonts, meta.get-function("contains-helvetica"))
CSS-Ausgabe
.content {
font-family: Tahoma, Geneva, Arial, sans-serif;
}
meta.get-mixin($name, $module: null) //=> function
- Dart Sass
- seit 1.69.0
- LibSass
- ✗
- Ruby Sass
- ✗
Gibt den Mixin-Wert namens $name zurück.
Wenn $module null ist, wird das im aktuellen Modul definierte Mixin namens $name zurückgegeben. Andernfalls muss $module eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht. In diesem Fall wird das Mixin in diesem Modul namens $name zurückgegeben.
Standardmäßig wird ein Fehler ausgelöst, wenn $name kein Mixin referenziert. Wenn $css jedoch true ist, wird stattdessen eine einfache CSS Funktion zurückgegeben.
Die zurückgegebene Funktion kann mit meta.call() aufgerufen werden.
SCSS-Syntax
@use "sass:meta";
@use "sass:string";
/// Passes each element of $list to a separate invocation of $mixin.
@mixin apply-to-all($mixin, $list) {
@each $element in $list {
@include meta.apply($mixin, $element);
}
}
@mixin font-class($size) {
.font-#{$size} {
font-size: $size;
}
}
$sizes: [8px, 12px, 2rem];
@include apply-to-all(meta.get-mixin("font-class"), $sizes);
Sass-Syntax
@use "sass:meta"
@use "sass:string"
/// Passes each element of $list to a separate invocation of $mixin.
@mixin apply-to-all($mixin, $list)
@each $element in $list
@include meta.apply($mixin, $element)
@mixin font-class($size)
.font-#{$size}
font-size: $size
$sizes: 8px, 12px 2rem
@include apply-to-all(meta.get-mixin("font-class"), $sizes)
CSS-Ausgabe
.font-8px {
font-size: 8px;
}
.font-12px {
font-size: 12px;
}
.font-2rem {
font-size: 2rem;
}
meta.global-variable-exists($name, $module: null)
global-variable-exists($name, $module: null) //=> boolean
Gibt zurück, ob eine globale Variable namens $name (ohne das $) existiert.
Wenn $module null ist, wird zurückgegeben, ob eine Variable namens $name ohne Namespace existiert. Andernfalls muss $module eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht. In diesem Fall wird zurückgegeben, ob dieses Modul eine Variable namens $name hat.
Siehe auch meta.variable-exists().
SCSS-Syntax
@use "sass:meta";
@debug meta.global-variable-exists("var1"); // false
$var1: value;
@debug meta.global-variable-exists("var1"); // true
h1 {
// $var2 is local.
$var2: value;
@debug meta.global-variable-exists("var2"); // false
}
Sass-Syntax
@use "sass:meta"
@debug meta.global-variable-exists("var1") // false
$var1: value
@debug meta.global-variable-exists("var1") // true
h1
// $var2 is local.
$var2: value
@debug meta.global-variable-exists("var2") // false
meta.inspect($value)
inspect($value) //=> unquoted string
Gibt eine Zeichenkettendarstellung von $value zurück.
Gibt eine Darstellung *jedes* Sass-Werts zurück, nicht nur derjenigen, die in CSS dargestellt werden können. Daher ist der Rückgabewert nicht garantiert gültiges CSS.
⚠️ Vorsicht!
Diese Funktion ist für die Fehlersuche gedacht; ihr Ausgabeformat ist nicht garantiert konsistent über Sass-Versionen oder Implementierungen hinweg.
SCSS-Syntax
@use "sass:meta";
@debug meta.inspect(10px 20px 30px); // unquote("10px 20px 30px")
@debug meta.inspect(("width": 200px)); // unquote('("width": 200px)')
@debug meta.inspect(null); // unquote("null")
@debug meta.inspect("Helvetica"); // unquote('"Helvetica"')
Sass-Syntax
@use "sass:meta"
@debug meta.inspect(10px 20px 30px) // unquote("10px 20px 30px")
@debug meta.inspect(("width": 200px)) // unquote('("width": 200px)')
@debug meta.inspect(null) // unquote("null")
@debug meta.inspect("Helvetica") // unquote('"Helvetica"')
meta.keywords($args)
keywords($args) //=> map
Gibt die Schlüsselwörter zurück, die an ein Mixin oder eine Funktion übergeben wurden, die beliebige Argumente akzeptiert. Das Argument $args muss eine Argumentliste sein.
Die Schlüsselwörter werden als Map von Argumentnamen als unquote Strings (ohne $) zu den Werten dieser Argumente zurückgegeben.
SCSS-Syntax
@use "sass:meta";
@mixin syntax-colors($args...) {
@debug meta.keywords($args);
// (string: #080, comment: #800, variable: #60b)
@each $name, $color in meta.keywords($args) {
pre span.stx-#{$name} {
color: $color;
}
}
}
@include syntax-colors(
$string: #080,
$comment: #800,
$variable: #60b,
)
Sass-Syntax
@use "sass:meta"
@mixin syntax-colors($args...)
@debug meta.keywords($args)
// (string: #080, comment: #800, variable: #60b)
@each $name, $color in meta.keywords($args)
pre span.stx-#{$name}
color: $color
@include syntax-colors($string: #080, $comment: #800, $variable: #60b)
CSS-Ausgabe
pre span.stx-string {
color: #080;
}
pre span.stx-comment {
color: #800;
}
pre span.stx-variable {
color: #60b;
}
meta.mixin-exists($name, $module: null)
mixin-exists($name, $module: null) //=> boolean
Gibt zurück, ob ein Mixin namens $name existiert.
Wenn $module null ist, wird zurückgegeben, ob ein Mixin namens $name ohne Namespace existiert. Andernfalls muss $module eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht. In diesem Fall wird zurückgegeben, ob dieses Modul ein Mixin namens $name hat.
SCSS-Syntax
@use "sass:meta";
@debug meta.mixin-exists("shadow-none"); // false
@mixin shadow-none {
box-shadow: none;
}
@debug meta.mixin-exists("shadow-none"); // true
Sass-Syntax
@use "sass:meta"
@debug meta.mixin-exists("shadow-none") // false
@mixin shadow-none
box-shadow: none
@debug meta.mixin-exists("shadow-none") // true
meta.module-functions($module) //=> map
- Dart Sass
- seit 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Nur Dart Sass unterstützt diese Funktion derzeit.
Gibt alle in einem Modul definierten Funktionen zurück, als Map von Funktionsnamen zu Funktionswerten.
Der Parameter $module muss eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht.
SCSS-Syntax
// _functions.scss
@function pow($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return $result;
}
@use "sass:map";
@use "sass:meta";
@use "functions";
@debug meta.module-functions("functions"); // ("pow": get-function("pow"))
@debug meta.call(map.get(meta.module-functions("functions"), "pow"), 3, 4); // 81
Sass-Syntax
// _functions.sass
@function pow($base, $exponent)
$result: 1
@for $_ from 1 through $exponent
$result: $result * $base
@return $result
@use "sass:map"
@use "sass:meta"
@use "functions"
@debug meta.module-functions("functions") // ("pow": get-function("pow"))
@debug meta.call(map.get(meta.module-functions("functions"), "pow"), 3, 4) // 81
meta.module-mixins($module) //=> map
- Dart Sass
- seit 1.69.0
- LibSass
- ✗
- Ruby Sass
- ✗
Gibt alle in einem Modul definierten Mixins zurück, als Map von Mixinnamen zu Mixinwerten.
Der Parameter $module muss eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht.
SCSS-Syntax
// _mixins.scss
@mixin stretch() {
align-items: stretch;
display: flex;
flex-direction: row;
}
@use "sass:map";
@use "sass:meta";
@use "mixins";
@debug meta.module-mixins("mixins"); // => ("stretch": get-mixin("stretch"))
.header {
@include meta.apply(map.get(meta.module-mixins("mixins"), "stretch"));
}
Sass-Syntax
// _mixins.scss
@mixin stretch()
align-items: stretch
display: flex
flex-direction: row
@use "sass:map"
@use "sass:meta"
@use "mixins"
@debug meta.module-mixins("mixins") // => ("stretch": get-mixin("stretch"))
.header
@include meta.apply(map.get(meta.module-mixins("mixins"), "stretch"))
CSS-Ausgabe
.header {
align-items: stretch;
display: flex;
flex-direction: row;
}
meta.module-variables($module) //=> map
- Dart Sass
- seit 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Nur Dart Sass unterstützt diese Funktion derzeit.
Gibt alle in einem Modul definierten Variablen zurück, als Map von Variablennamen (ohne $) zu den Werten dieser Variablen.
Der Parameter $module muss eine Zeichenkette sein, die dem Namespace einer @use-Regel in der aktuellen Datei entspricht.
SCSS-Syntax
// _variables.scss
$hopbush: #c69;
$midnight-blue: #036;
$wafer: #e1d7d2;
@use "sass:meta";
@use "variables";
@debug meta.module-variables("variables");
// (
// "hopbush": #c69,
// "midnight-blue": #036,
// "wafer": #e1d7d2
// )
Sass-Syntax
// _variables.sass
$hopbush: #c69
$midnight-blue: #036
$wafer: #e1d7d2
@use "sass:meta"
@use "variables"
@debug meta.module-variables("variables")
// (
// "hopbush": #c69,
// "midnight-blue": #036,
// "wafer": #e1d7d2
// )
meta.type-of($value)
type-of($value) //=> unquoted string
Gibt den Typ von $value zurück.
Dies kann die folgenden Werte zurückgeben
Neue mögliche Werte können in Zukunft hinzugefügt werden. Es kann entweder list oder map für () zurückgeben, abhängig davon, ob es von einer Map-Funktion zurückgegeben wurde oder nicht.
SCSS-Syntax
@use 'sass:meta';
@debug meta.type-of(10px); // number
@debug meta.type-of(10px 20px 30px); // list
@debug meta.type-of(()); // list
Sass-Syntax
@use 'sass:meta'
@debug meta.type-of(10px) // number
@debug meta.type-of(10px 20px 30px) // list
@debug meta.type-of(()) // list
meta.variable-exists($name)
variable-exists($name) //=> boolean
Gibt zurück, ob eine Variable namens $name (ohne das $) im aktuellen Geltungsbereich existiert.
Siehe auch meta.global-variable-exists().
SCSS-Syntax
@use "sass:meta";
@debug meta.variable-exists("var1"); // false
$var1: value;
@debug meta.variable-exists("var1"); // true
h1 {
// $var2 is local.
$var2: value;
@debug meta.variable-exists("var2"); // true
}
Sass-Syntax
@use "sass:meta"
@debug meta.variable-exists("var1") // false
$var1: value
@debug meta.variable-exists("var1") // true
h1
// $var2 is local.
$var2: value
@debug meta.variable-exists("var2") // true