Mehrere Möglichkeiten zur Lösung von CSS-Stilkonflikten (Zusammenfassung)

Mehrere Möglichkeiten zur Lösung von CSS-Stilkonflikten (Zusammenfassung)

1. Verfeinern Sie den Selektor

Durch die Verwendung von Kombinatoren kann die Beschreibung des Selektors präziser geschrieben werden (siehe CSS-Selektoren – MDN). Wenn Sie beispielsweise im folgenden Codeausschnitt Stile zu .apple in .cellphones hinzufügen möchten, wirkt sich die Verwendung von nur .apple zwangsläufig auch auf .apple in .fruit aus.

<div Klasse="Handys">
  <div Klasse="Apfel"></div>
</div>
<div Klasse="Obst">
  <div Klasse="Apfel"></div>
</div>

Eine genauere Beschreibung könnte Descendant Combinator oder Child Combinator sein. Je genauer die Beschreibung, desto höher die Priorität. Eine Beschreibung mit höherer Priorität überschreibt eine Beschreibung mit niedrigerer Priorität.

/* Nachkommenkombinierer: alle Nachkommenknoten*/
.Handys .Apple {
 Rand: 1px tief schwarz;
}

/* Präziserer Nachkommenkombinator */
Körper .Handys .Apple {
  Rand: 1px durchgehend blau;
}

/* Child Combiner: direkte untergeordnete Knoten */
.Handys > .Apple {
  Rand: 1px durchgehend rot;
}

Wenn Sie alle oben genannten Stile der Reihe nach zu .apple hinzufügen, wird der Rand schließlich blau angezeigt.

Detaillierte Prioritätsregeln finden Sie unter CSS Priority

2. Schreiben Sie den Selektornamen erneut

Im Wesentlichen ein Sonderfall des vorherigen Falls. Fügen Sie beispielsweise für .apple den folgenden Stil hinzu:

.Handys > .Apple.Apple {
  Rand: 1px durchgehend lila;
}
.Handys > .Apple {
  Rand: 1px durchgehend rot;
}

Schließlich erscheint der Rand violett.

3. Reihenfolge im CSS-Stylesheet ändern

Bei Stilen, die durch denselben Typselektor angegeben werden, überschreiben die Stile, die später in der CSS-Datei vorkommen, die früheren Stile.

Beispielsweise wird für das Div-Element im folgenden Code das Browser-Rendering-Ergebnis rot sein:

<div Klasse="roterRahmen" Klasse="schwarzerRahmen"></div>
.schwarzer Rand {
  Rand: 1px tief schwarz;
}
.redBorder {
  Rand: 1px durchgehend rot;
}

Es ist wichtig zu beachten, dass, obwohl .blackBorder in der HTML-Datei nach .redBorder erscheint, die Priorität anhand ihrer Reihenfolge in der CSS-Datei bestimmt wird. Das heißt, es wird nur die später in der CSS-Datei enthaltene .redBorder-Erweiterung verwendet.

4. Priorität aktiv erhöhen (nicht empfohlen)

Es gibt auch eine einfache und grobe Methode, die jedoch nicht empfohlen wird. Dabei wird nach dem Stil, den Sie verwenden möchten, das Schlüsselwort !important hinzugefügt, um die Stilpriorität auf ein sehr hohes Niveau zu heben. Zum Beispiel:

<div Klasse="roterRahmen" Klasse="grünerRahmen"></div>
.grüneBorder {
  Rand: 1px durchgehend grün !wichtig;
}
.redBorder {
  Rand: 1px durchgehend rot;
}

Für den obigen Code wird der Rand grün angezeigt.

Die Verwendung von !important ist eine sehr schlechte Angewohnheit, die die in den Stylesheets enthaltenen kaskadierenden Regeln verletzt und das Debuggen sehr schwierig macht!

Quellen:
Priorität – MDN
So lösen Sie CSS-Stilkonflikte - Magic Time Machine

Damit ist dieser Artikel über verschiedene Möglichkeiten zur Lösung von CSS-Stilkonflikten abgeschlossen (Zusammenfassung). Weitere relevante CSS-Stilkonflikte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Einige Punkte, auf die wir beim Entwurf einer Webseite achten sollten

>>:  Erklärung der Rückgabe einer MySQL-Tabelle führt zur Ungültigkeit des Index

Artikel empfehlen

So ändern Sie die Systemsprache von CentOS7 in vereinfachtes Chinesisch

veranschaulichen Bei einer Eigeninstallation des ...

Wie MySQL Milliarden von Datenverkehr unterstützt

Inhaltsverzeichnis 1 Master-Slave-Lese-/Schreibtr...

SQL-Gruppierung zum Entfernen von Duplikaten und Sortieren nach anderen Feldern

brauchen: Identische Elemente eines Feldes zusamm...

Implementierung eines einfachen Rechners mit Javascript

In diesem Artikelbeispiel wird der spezifische Ja...

Detaillierte Diskussion zum Thema mysqldump-Datenexport

1. Bei der Verwendung von mysqldump wird ein Fehl...

Detaillierte Erklärung der Verwendung von Object.assign() in ES6

Inhaltsverzeichnis 2. Zweck 2.1 Objekten Eigensch...

Eine kurze Einführung in den allgemeinen Prozess der Web-Frontend-Webentwicklung

Ich sehe viele Anfänger in der Front-End-Entwicklu...

So stellen Sie Docker-Containerdaten wieder her

Die Datenbankdaten der Projekttestumgebung sind v...

Detaillierte Erläuterung der Funktionen und Methoden des Vue3-Lebenszyklus

1. Übersicht Bei der sogenannten Lifecycle-Funkti...

Details zum TypeScript-Mapping-Typ

Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...

Detaillierte Erklärung des HTML-Seitenkopfcodebeispiels

Wissenspunkt 1: Legen Sie die Basis-URL der Webse...

Einfaches HTML-Applet für Einkaufsmengen

Dieser Artikel stellt Ihnen ein einfaches HTML-Ap...

jQuery implementiert Funktionen zum Reduzieren und Erweitern von Artikeln

Dieses Artikelbeispiel teilt den spezifischen Cod...

Codebeispiel für einen einfachen UDP-Server-Client

Ich werde nicht näher auf die Theorie von UDP ein...