Heim > Web-Frontend > CSS-Tutorial > Hauptteil

So legen Sie den CSS-Bereich fest

醉折花枝作酒筹
Freigeben: 2023-01-07 11:45:18
Original
4431 Leute haben es durchsucht

In CSS können Sie das Attribut „scoped“ verwenden, um den Bereich festzulegen. Wenn das Style-Tag das Attribut „scoped“ hat, wirkt sich sein CSS nur auf die Elemente in der aktuellen Komponente aus. Der Stammknoten einer untergeordneten Komponente wird jedoch sowohl von ihrem übergeordneten CSS als auch vom CSS der untergeordneten Komponente beeinflusst.

So legen Sie den CSS-Bereich fest

Die Betriebsumgebung dieses Tutorials: Windows7-System, CSS3- und HTML5-Version, Dell G3-Computer.

Als ich zum ersten Mal mit Vue Single File in Kontakt kam, war ich etwas verwirrt über das Scoped-Attribut im Style-Tag. Schließlich habe ich es noch nie zuvor verwendet.

Eine Standard-.vue-Datei sieht so aus:

// html内容区域
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>

//相关数据及事件区域,通俗说就是我们写JS代码的地方
<script>
export default {
  name: &#39;HelloWorld&#39;,
  data () {
    return {
      msg: &#39;Welcome to Your Vue.js App&#39;
    }
  }
}
</script>

// CSS样式区域
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
    .hello { color: #efefef; }
</style>
Nach dem Login kopieren

Sie können sehen, dass das Style-Tag ein Attribut mit Gültigkeitsbereich enthält. Sein CSS wirkt sich nur auf die Elemente in der aktuellen Komponente aus. Dies ähnelt der Stilkapselung im Schatten-DOM. Es weist einige Einschränkungen auf, erfordert jedoch kein Profil. Durch die Verwendung von PostCSS wird die folgende Transformation erreicht:

<style scoped>
.example {
  color: red;
}
</style>

<template>
  <div class="example">hi</div>
</template>
Nach dem Login kopieren

Konvertierungsergebnis:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>
Nach dem Login kopieren

Mischung lokaler und globaler Stile

Bemerkenswert ist, dass Sie in einer Komponente sowohl Stile mit und ohne Gültigkeitsbereich verwenden können:

<style>
/* 全局样式 */
</style>

<style scoped>
/* 本地样式 */
</style>
Nach dem Login kopieren

The Der Stil des untergeordneten Elements ist das Ergebnis der Zusammenarbeit zwischen dem Stammelement des untergeordneten Elements und dem CSS innerhalb der untergeordneten Komponente.

Nach der Verwendung von Scoped dringt der Stil des übergeordneten Bereichs nicht in die untergeordnete Komponente ein. Der Stammknoten einer untergeordneten Komponente wird jedoch sowohl von ihrem übergeordneten CSS als auch vom CSS der untergeordneten Komponente beeinflusst. Dieses Design dient dazu, dass die übergeordnete Komponente den Stil des Stammelements ihrer untergeordneten Komponente aus Layout-Perspektive anpassen kann. Das Beispiel sieht wie folgt aus:

untergeordnete Komponente

<template>
    <div class="wrap">
        <p>Hello world</p>
    </div>
</template>

<style scoped>
    .wrap {
        color: #ffffff;
        background: #666666;
    }
</style>
Nach dem Login kopieren

übergeordnete Komponente

<template>
    <div class="wrap">
       //ChildMOdul为上面的子组件 
       <ChildModul/>
    </div>
</tamplate>
<style scoped>
//子组件根元素样式
    .wrap {
        margin: 0 10px
    }
</style>
Nach dem Login kopieren

Die untergeordnete Komponente definiert eine Hintergrundfarbe als #efefef-Farbe Für den Stil von #ccc wird im übergeordneten Element ein Rahmen von 10 Pixeln für das Stammelement der untergeordneten Komponente definiert, und der vom untergeordneten Modul angezeigte endgültige Stil lautet wie folgt:
So legen Sie den CSS-Bereich fest

As Sie können dem Bild oben entnehmen, dass der untergeordnete Stil einer Komponente das Ergebnis der Kombination des Stammelements der untergeordneten Komponente in der übergeordneten Komponente und der bereichsbezogenen CSS-Stile in der untergeordneten Komponente ist.

Tiefenwirkender Selektor

Wenn Sie möchten, dass ein Selektor in einem Bereichsstil „tiefer“ wirkt, z. B. auf untergeordnete Komponenten, können Sie den Operator >>> verwenden:

<style scoped>
.a >>> .b { /* ... */ }
</style>
Nach dem Login kopieren

Der obige Code wird Wird kompiliert in:

.a[data-v-f3f3eg9] .b { /* ... */ }
Nach dem Login kopieren

Einige Präprozessoren wie Sass können nicht richtig analysieren>>>. In diesem Fall können Sie stattdessen den /deep/-Operator verwenden – dies ist ein Alias ​​für >>> und funktioniert genauso gut. Versuchen Sie es mit dem vorherigen Code und legen Sie mit der Tiefenauswahl den Stil der untergeordneten Komponente in der übergeordneten Komponente fest:

Übergeordnete Komponente

.wrap /deep/ .child--css {
    font-size: 36px;
  }
Nach dem Login kopieren

Rendering:
So legen Sie den CSS-Bereich fest

Anhand der Höhe können Sie erkennen, dass der Stil auf die angewendet wurde untergeordnete Komponente. Ich weiß, dass Sie vielleicht fragen möchten, warum Sie /deep/ anstelle von >>> verwenden, wenn Sie den Sass-Preselector nicht sehen hat nicht funktioniert. Dann habe ich zu /deep/ gewechselt und der Stil war effektiv. Um unverantwortlich zu sein: Wenn >>> nicht funktioniert, ändern Sie es einfach in /deep/. Der Zweck besteht jedoch darin, den in der übergeordneten Komponente geschriebenen Stilen das Eindringen in die untergeordneten Komponenten zu ermöglichen. . .

Dynamisch generierte Inhalte

Über V-HTML erstellte DOM-Inhalte werden von Stilen innerhalb des Geltungsbereichs nicht beeinflusst. Sie können sie aber immer noch über Deep-Action-Selektoren gestalten.

Vorsicht vor Ereignissen

  • Der CSS-Bereich kann die Klasse nicht ersetzen: Unter Berücksichtigung der Art und Weise, wie Browser verschiedene CSS-Selektoren rendern, wenn p{ color: red } einen Gültigkeitsbereich hat (d. h. mit Attributauswahl, wenn es in Kombination mit anderen verwendet wird). Prozessoren) um ein Vielfaches langsamer sein. Wenn Sie stattdessen eine Klasse oder eine ID verwenden, z. B. .example { color: red }, werden die Auswirkungen auf die Leistung beseitigt.

  • Seien Sie vorsichtig mit untergeordneten Selektoren in rekursiven Komponenten. Wenn bei CSS-Regeln in den Selektoren .a .b ein mit .a übereinstimmendes Element eine rekursive untergeordnete Komponente enthält, werden alle untergeordneten Komponenten in .b von dieser Regel abgeglichen.

Empfohlenes Lernen: CSS-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo legen Sie den CSS-Bereich fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
css
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!