Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Wie erbe ich Werte mithilfe von CSS-Variablen mit einem Fallback?

DDD
Freigeben: 2024-11-20 04:00:02
Original
329 Leute haben es durchsucht

How to Inherit Values Using CSS Variables with a Fallback?

So erben Sie Werte in CSS-Variablen

CSS-Variablen, auch benutzerdefinierte Eigenschaften genannt, ermöglichen es uns, Werte auf eine Weise zu speichern und zu bearbeiten, die in unserem gesamten Prozess wiederverwendet werden kann Stylesheet. Eine Einschränkung von CSS-Variablen besteht jedoch darin, dass sie keine Werte von ihren übergeordneten Elementen erben können.

Problem

Betrachten Sie beispielsweise den folgenden Code:

:root {
  --color: rgba(20, 20, 20, 0.5); /* Default value */
}

.box {
  width: 50px;
  height: 50px;
  display: inline-block;
  margin-right: 30px;
  border-radius: 50%;
  position: relative;
}

.red {
  background: rgba(255, 0, 0, 0.5);
}

.blue {
  background: rgba(0, 255, 0, 0.5);
}

.box:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 50%;
  transform: translateX(30px);
  background: var(--color);
  filter: invert(1);
}
Nach dem Login kopieren

In diesem Code haben wir eine :root-Regel, die eine --color-Variable mit dem Standardwert rgba(20, 20, 20, 0,5) definiert. Wir haben auch eine .box-Klasse, die einige Stile für ein rechteckiges Element festlegt, und ein :before-Pseudoelement, das ein kreisförmiges Element innerhalb der Box erstellt.

Die Hintergrundeigenschaft des :before-Pseudoelements ist festgelegt zu var(--color), was bedeutet, dass es den Wert der Variablen --color erbt. Wir können jedoch den Wert der Variable --color für jedes Feld überschreiben, indem wir Inline-Stile verwenden, wie im folgenden Beispiel gezeigt:

<div class="box red">
Nach dem Login kopieren

Die Variable --color der ersten beiden Felder wird auf gesetzt rgba(0, 255, 0, 0.5) bzw. rgba(0, 255, 255, 0.5), während das dritte Feld versucht, die Variable --color von seinem übergeordneten Element zu erben. Wie wir bereits erwähnt haben, können CSS-Variablen jedoch keine Werte erben, daher bleibt die Variable --color für das dritte Feld auf ihrem Standardwert rgba(20, 20, 20, 0.5).

Lösung

Die Funktion var() bietet eine Möglichkeit, einen Fallback-Wert für eine CSS-Variable zu definieren, falls die Variable nicht definiert oder auf ihren Anfangswert gesetzt ist. Der Fallback-Wert wird als zweites Argument der Funktion var() angegeben, wie im folgenden Beispiel gezeigt:

background: var(--color, inherit);
Nach dem Login kopieren

In diesem Beispiel, wenn die Variable --color nicht definiert oder auf ihren Wert gesetzt ist Beim Anfangswert erbt die Hintergrundeigenschaft die Farbe des übergeordneten Elements. Dies ist genau das Verhalten, das wir in diesem Fall wollen.

Hier ist der aktualisierte Code mit dem zusätzlichen Fallback-Wert:

:root {
  --color: rgba(25, 25, 25, 0.5); /* Defined as the default value */
}

.box {
  width: 50px;
  height: 50px;
  display: inline-block;
  margin-right: 30px;
  border-radius: 50%;
  position: relative;
}

.red {
  background: rgba(255, 0, 0, 0.5);
}

.blue {
  background: rgba(0, 0, 255, 0.5);
}

.box:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 50%;
  transform: translateX(30px);
  background: var(--color, inherit);
  filter: invert(1);
}
Nach dem Login kopieren

Jetzt erben alle drei Kästchen die Farbe ihrer übergeordneten Felder Element, auch wenn die Variable --color in den Inline-Stilen auf einen anderen Wert gesetzt ist.

Das obige ist der detaillierte Inhalt vonWie erbe ich Werte mithilfe von CSS-Variablen mit einem Fallback?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage