Detaillierte Erläuterung der Verwendung von var () von CSS3 zum Ändern von SCSS-Variablenwerten zur Laufzeit

Detaillierte Erläuterung der Verwendung von var () von CSS3 zum Ändern von SCSS-Variablenwerten zur Laufzeit

var() Einführung und Verwendung

Details (MDN) IE ist ungültig, andere gängige Browser sind gültig

var()-Verwendung

Kann nur in {} deklariert werden, der Gültigkeitsbereich wird durch den Selektor von {} bestimmt

<!-- Haftungsausschluss-->
Körper{
  --name:value; //Gültig im Text}


<!-- Verwendung -->
.prüfen{
  attr: var(--name,defaultValue) //Wenn --name nicht existiert, verwende defaultValue
  
  var(--name):#369;//Falsche Verwendung}

Die native Syntax zur Variablendefinition in CSS lautet: –*, und die Syntax zur Variablenverwendung lautet: var(–*), wobei * unseren Variablennamen darstellt.

Es darf jedoch keine Zeichen wie $, [, ^, (, %, usw. enthalten. Gewöhnliche Zeichen sind auf die Kombination aus „Zahlen [0-9]“, „Buchstaben [a-zA-Z]“, „Unterstrich _“ und „Bindestrich -“ beschränkt, es kann jedoch chinesischer, japanischer oder koreanischer Art sein.

Ändern von SCSS-Variablenwerten zur Laufzeit

Diese Methode ändert den Wert der SCSSSS-Variable nicht direkt, kann aber denselben Effekt erzielen. Es ist effektiver und prägnanter, wenn eine Variable mehrere Attribute steuert. Es ist nicht notwendig, eine einzelne Variable zu verwenden, um ein einzelnes Attribut zu steuern. Diese Methode dient lediglich zum Ändern des Stilattributs. Eins-zu-eins ist dasselbe wie das Schreiben des Attributs im Stil.

Prinzip (Englisch)

Einfach ausgedrückt werden die SCSS-Variablen durch CSS-Variablen gesteuert

$farben: (
  primär: #FFBB00,
  sekundär: #0969A2
);

Selektor1{
  @each $name, $farbe in $farben {
    --Farbe-#{$name}: $Farbe;
  }
}

<!-- Generierungseffekt von Selector1-->
:Wurzel {
  --Farbe-Primär: #FFBB00;
  --Farbe-Sekundär: #0969A2;
}


<!-- Verwendungsmethode 1: CSS-Variablen direkt verwenden -->
Wähler{
  Farbe: var(--color-primary);
}

<!-- Verwendung 2 verwendet SCSS-Funktionen, um den SCSS-Syntaxempfehlungen zu entsprechen -->  
@Funktion Farbe($Farbname) {
  @return var(--color-#{$color-name});
}

Körper { 
  Farbe: Farbe (primär); //Verwenden}

<!-- Körpergenerierungseffekt -->
Körper { 
  Farbe: var(--color-primary); //Dies kann von js festgelegt werden}

js setzt CSS-Variablen, d. h. setzt und führt SCSS-Variablen aus

domObject.style.setProperty(name,value); //Name ist der Name der CSS-Variable, zB: --color-primary

Bisher wurde die Laufzeitänderung der Variablenwerte in SCSS abgeschlossen. Ich bin mir über das spezifische Anwendungsszenario nicht sicher, aber ich bin darauf gestoßen.

Mein Anwendungsszenario:

Benutzerdefinierte Komponenten müssen einige Stileigenschaften offenlegen, damit Benutzer sie frei anpassen können, ähnlich wie Designs, aber ich möchte keine Zeichenfolgenverkettung verwenden, um sie abzuschließen, was zu verschwenderisch ist. Jedes Mal, wenn ein Wert geändert wird, muss der gesamte Stil neu geschrieben werden, und dies erfordert häufige Änderungen am DOM, was nicht mit der Idee von Vue übereinstimmt, und es ist zu umständlich, direkt in CSS zu schreiben.

Ich verwende also SCSS, um Stile zu schreiben. Die Verschachtelung von SCSS ist wirklich einfach zu verwenden. LESS unterstützt keine verschachtelten Attribute, was sehr unbequem zu verwenden und nicht so prägnant wie SCSS ist.
Da scss vorkompiliert ist, kann der Variablenwert zur Laufzeit nicht geändert werden und ich muss ihn ändern. Deshalb habe ich bei Google eine zufriedenstellende Lösung gefunden -> Prinzip (Englisch)

Besondere Aufmerksamkeit

Wenn Sie „scoped“ in einer einzelnen Dateikomponente (.vue) verwenden, sind die Effekte von Selektoren wie :root und :body nicht wie erwartet.

[data-v-1374924e]:Wurzel {
  --Test: 100px;
}

In diesem Fall kann die Variable -test überhaupt nicht gefunden werden, da keine Wurzel vorhanden ist. Das Scoped-Feature der Vue-Komponente ist nur in dieser Komponente gültig, aber die Komponente hat kein vollständiges Dokument, d. h. es gibt keine Wurzel innerhalb der Komponente.

Berücksichtigen Sie daher in der Vue-Datei sorgfältig den Selektorbereich der CSS-Variablendeklaration, um ungültige Variablen zu vermeiden

Damit ist dieser Artikel über die Verwendung von var() in CSS3 zum Ändern von SCSS-Variablenwerten zur Laufzeit abgeschlossen. Weitere Informationen zum Ändern von SCSS-Variablenwerten mit CSS3 finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  So kehren Sie schnell von unten nach oben zurück, wenn die Webseite zu viele Inhalte enthält

>>:  So verwenden Sie CURRENT_TIMESTAMP in MySQL

Artikel empfehlen

Was tun, wenn der von Docker Run gestartete Container hängt und Daten verliert?

Szenariobeschreibung In einem bestimmten System w...

Schritte zur vollständigen Deinstallation des Docker-Images

1. docker ps -a zeigt den laufenden Image-Prozess...

So generieren Sie eine Vue-Benutzeroberfläche per Drag & Drop

Inhaltsverzeichnis Vorwort 1. Technisches Prinzip...

Parameter, um Iframe transparent zu machen

<iframe src="./ads_top_tian.html" all...

Mysql8.0 verwendet Fensterfunktionen, um Sortierprobleme zu lösen

Einführung in MySQL-Fensterfunktionen MySQL unter...

jQuery implementiert das Ausblenden und Anzeigen von HTML-Elementen

Lassen Sie uns die Funktion von Taobao nachahmen,...

Praktische TypeScript-Tipps, die Sie vielleicht nicht kennen

Inhaltsverzeichnis Vorwort Funktionsüberladung Zu...

Detaillierte Erklärung der Rahmen- und Regelattribute der Tabelle in HTML

Die Rahmen- und Regelattribute des Tabellentags k...

Vue imitiert den Formularbeispielcode von ElementUI

Implementierungsanforderungen Das ElementUI imiti...

Detaillierte Erklärung zur SQL-Injection - Sicherheit (Teil 2)

Sollte dieser Artikel Fehler enthalten oder du An...

Erste Erkundung gängiger Befehle für Docker-Anfänger

Bevor wir Docker offiziell verwenden, machen wir ...