Heim  >  Artikel  >  Web-Frontend  >  Lassen Sie uns über die neuen Funktionen im Vue3-Stil sprechen (Zusammenfassung)

Lassen Sie uns über die neuen Funktionen im Vue3-Stil sprechen (Zusammenfassung)

青灯夜游
青灯夜游nach vorne
2022-05-12 11:11:373198Durchsuche

Vue3 hat den Stil verbessert. Dieser Artikel wird die neuen Funktionen von Vue3 zusammenfassen und mit Ihnen teilen.

Lassen Sie uns über die neuen Funktionen im Vue3-Stil sprechen (Zusammenfassung)

Die nach Vue3.0 eingeführte Setup-Funktion entwickelt Vue-Komponenten genau wie das Schreiben von JS. Darüber hinaus fügt Style auch viele neue Funktionen hinzu, wie z. B. die Einführung von Variablen und Funktionen, wodurch CSS wiederverwendbar wird ...

Neue Stilfunktionen

Vue3.2-Version hat viele Verbesserungen am Stil einzelner Dateikomponenten vorgenommen, wie z. B. lokale Stile, CSS-Variablen und Stile, die für Vorlagen verfügbar gemacht werden. (Teilen von Lernvideos: vue-Video-Tutorial)

1. Teilstil

Wenn das Tag c9ccee2e6ea535a969eb3f532ad9fe89 das Attribut scoped hat Gleichzeitig wird sein CSS nur auf Elemente der aktuellen Komponente angewendet: c9ccee2e6ea535a969eb3f532ad9fe89 标签带有 scoped attribute 的时候,它的 CSS 只会应用到当前组件的元素上:

<template>
  <div class="example">hi</div>
</template>
 
<style scoped>
.example {
  color: red;
}
</style>

二、深度选择器

处于 scoped 样式中的选择器如果想要做更“深度”的选择,也即:影响到子组件,可以使用 :deep() 这个伪类:

<style scoped>
.a :deep(.b) {
  /* ... */
}
</style>

通过 v-html 创建的 DOM 内容不会被作用域样式影响,但你仍然可以使用深度选择器来设置其样式。

三、插槽选择器

默认情况下,作用域样式不会影响到 38b537b6886351ac721d89624ba185ca 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 :slotted 伪类以确切地将插槽内容作为选择器的目标:

<style scoped>
:slotted(div) {
  color: red;
}
</style>

四、全局选择器

如果想让其中一个样式规则应用到全局,比起另外创建一个 c9ccee2e6ea535a969eb3f532ad9fe89,可以使用 :global 伪类来实现:

<style scoped>
:global(.red) {
  color: red;
}
</style>

五、混合使用局部与全局样式

你也可以在同一个组件中同时包含作用域样式和非作用域样式:

<style>
/* global styles */
</style>
 
<style scoped>
/* local styles */
</style>

六、支持CSS Modules

a6167d77ee734aaef6dcd2aa69de7b33 标签会被编译为 CSS Modules 并且将生成的 CSS 类键暴露给组件:

1、 默认以$style 对象暴露给组件;

<template>
  <p :class="$style.red">
    This should be red
  </p>
</template>
 
<style module>
.red {
  color: red;
}
</style>

2、可以自定义注入module名称

<template>
  <p :class="classes.red">red</p>
</template>
 
<style module="classes">
.red {
  color: red;
}
</style>

七、与setup一同使用

注入的类可以通过 useCssModule API 在 setup() 和 5101c0cdbdc49998c642c71f6b6410a8 中使用:

<script setup>
import { useCssModule } from &#39;vue&#39;
 
// 默认, 返回 <style module> 中的类
const defaultStyle = useCssModule()
 
// 命名, 返回 <style module="classes"> 中的类
const classesStyle = useCssModule(&#39;classes&#39;)
</script>

八、动态 CSS

单文件组件的 c9ccee2e6ea535a969eb3f532ad9fe89 标签可以通过 v-bind

<script setup>
const theme = {
  color: &#39;red&#39;
}
</script>
 
<template>
  <p>hello</p>
</template>
 
<style scoped>
p {
  color: v-bind(&#39;theme.color&#39;);
}
</style>

🎜 2. Tiefenselektor 🎜🎜🎜🎜Wenn Sie eine „tiefere“ Auswahl für einen Selektor im scoped-Stil treffen möchten, d. h. um Unterkomponenten zu beeinflussen, Sie können die Pseudoklasse :deep() verwenden: 🎜rrreee
🎜DOM-Inhalte, die mit v-html erstellt wurden, werden von Bereichsstilen nicht beeinflusst, aber Sie können Verwenden Sie weiterhin die Tiefenauswahl, um es zu gestalten. 🎜
🎜
🎜🎜🎜3 Standardmäßig wirken sich Bereichsstile nicht auf den von 38b537b6886351ac721d89624ba185ca gerenderten Inhalt aus, da davon ausgegangen wird, dass sie von der übergeordneten Komponente gehalten und übergeben werden. Verwenden Sie die Pseudoklasse :slotted, um den Slot-Inhalt genau wie den Selektor anzusprechen: 🎜rrreee🎜🎜🎜🎜 4. Globaler Selektor 🎜🎜🎜🎜Wenn Sie möchten, dass eine der Stilregeln global angewendet wird, ist dies besser als das Erstellen eines anderen c9ccee2e6ea535a969eb3f532ad9fe89 , Sie können die Pseudoklasse :global verwenden, um Folgendes zu erreichen: 🎜rrreee🎜🎜🎜🎜5. Mischen Sie lokale und globale Stile🎜🎜🎜🎜Sie können auch sowohl bereichsbezogene als auch nicht bereichsbezogene Stile in dieselbe Komponente einbinden: 🎜rrreee🎜🎜🎜🎜6. Unterstützt CSS-Module🎜🎜🎜🎜a6167d77ee734aaef6dcd2aa69de7b33-Tag wird in CSS Modules🎜 und stellen Sie den generierten CSS-Klassenschlüssel für die Komponente bereit: 🎜 🎜1. Standardmäßig wird das $style-Objekt der Komponente angezeigt 🎜rrreee🎜2. Sie können den injizierten Modulnamen anpassen🎜rrreee🎜🎜🎜🎜7 Wird mit Setup verwendet🎜🎜🎜🎜Die injizierte Klasse kann useCssModule🎜 API in setup() und <script setup&gt ; Verwendet in: 🎜rrreee🎜🎜🎜🎜 8. Dynamisches CSS🎜 🎜🎜🎜Das c9ccee2e6ea535a969eb3f532ad9fe89-Tag einer einzelnen Dateikomponente kann den CSS-Wert über das v-bind-CSS mit dem Status der dynamischen Komponente verknüpfen Funktion: 🎜rrreee🎜 (Ende) 🎜

(Teilen von Lernvideos: Web-Frontend-Entwicklung, Grundlegendes Programmiervideo)

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die neuen Funktionen im Vue3-Stil sprechen (Zusammenfassung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen