Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Wie können Sie einen „div'-Container von öffentlichen CSS-Stilen isolieren und verhindern, dass seine untergeordneten Elemente globale Stile erben?

Linda Hamilton
Freigeben: 2024-10-26 04:19:03
Original
375 Leute haben es durchsucht

How can you isolate a `div` container from public CSS styles and prevent its children from inheriting global styles?

Isolieren eines Div aus öffentlichen CSS-Stilen

Problem

Betrachten Sie den folgenden HTML-Code:

<code class="html"><div id="mydiv">
  <img src="an image source" />
  <h1>Hi it's test</h1>
</div></code>
Nach dem Login kopieren

Anwenden des Folgenden CSS-Stylesheet:

<code class="css">img {
  width: 100px;
  height: 100px;
}
h1 {
  font-size: 26px;
  color: red;
}</code>
Nach dem Login kopieren

Es stellt sich die Frage: Wie können wir verhindern, dass das für alle und

Tags davon abhalten, die Elemente im #mydiv-Container zu beeinflussen?

Lösung

Um die Elemente in #mydiv von den globalen CSS-Stilen zu isolieren, können wir die Abkürzungseigenschaft „all“ und das in eingeführte Schlüsselwort „unset“ nutzen CSS-Kaskadierung und Vererbungsebene 3.

Indem wir all: initial auf #mydiv setzen, blockieren wir die Vererbung für alle Eigenschaften und setzen sie auf ihre Standardwerte zurück. Dies verhindert, dass die globalen Stile in den Container kaskadieren.

Um die Vererbung innerhalb von #mydiv zu ermöglichen, können wir all:unset für seine Nachkommen festlegen. Auf diese Weise ermöglichen wir, dass die im Container definierten Regeln ohne Beeinträchtigung durch externe Stile wirksam werden.

Hier ist der überarbeitete CSS-Code:

<code class="css">#mydiv {
  all: initial;
}
#mydiv * {
  all: unset;
}</code>
Nach dem Login kopieren

Es ist wichtig zu beachten, dass diese Technik gilt für alle möglichen CSS-Eigenschaften, einschließlich der vom Hersteller vorgegebenen Eigenschaften. Um eine umfassende Browserunterstützung sicherzustellen, wird empfohlen, auch auf Pseudoelemente abzuzielen:

<code class="css">#mydiv::before,
#mydiv::after,
#mydiv *::before,
#mydiv *::after {
  all: unset;
}</code>
Nach dem Login kopieren

Alternativer Ansatz

Alternativ können Sie für eine breitere Browserkompatibilität jede CSS-Eigenschaft manuell auf ihren Anfangspunkt setzen Wert auf #mydiv und auf seine Nachkommen erben, wie im folgenden Code zu sehen:

<code class="css">#mydiv {
  align-content: initial;
  align-items: initial;
  align-self: initial;
  ...

  color: inherit;
  ...
}

#mydiv::before,
#mydiv::after,
#mydiv *,
#mydiv *::before,
#mydiv *::after {
  align-content: initial;
  align-items: initial;
  align-self: initial;
  ...

  color: inherit;
  ...
}</code>
Nach dem Login kopieren

Browser-Unterstützung

Die All-Shorthand-Eigenschaft wird in den folgenden Browsern unterstützt:

  • Chrome 37
  • Firefox 27
  • Safari 9.1
  • Edge 79
  • Opera 24

Für bis - Aktuelle Informationen zur Browser-Unterstützung finden Sie in der offiziellen Dokumentation.

Das obige ist der detaillierte Inhalt vonWie können Sie einen „div'-Container von öffentlichen CSS-Stilen isolieren und verhindern, dass seine untergeordneten Elemente globale Stile erben?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage