Heim > Web-Frontend > View.js > Hauptteil

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

青灯夜游
Freigeben: 2022-05-12 21:23:26
nach vorne
3267 Leute haben es durchsucht

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 <style> das Attribut scoped hat Gleichzeitig wird sein CSS nur auf Elemente der aktuellen Komponente angewendet: <style> 标签带有 scoped attribute 的时候,它的 CSS 只会应用到当前组件的元素上:

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

二、深度选择器

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

<style scoped>
.a :deep(.b) {
  /* ... */
}
</style>
Nach dem Login kopieren

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

三、插槽选择器

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

<style scoped>
:slotted(div) {
  color: red;
}
</style>
Nach dem Login kopieren

四、全局选择器

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

<style scoped>
:global(.red) {
  color: red;
}
</style>
Nach dem Login kopieren

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

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

<style>
/* global styles */
</style>
 
<style scoped>
/* local styles */
</style>
Nach dem Login kopieren

六、支持CSS Modules

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

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

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

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

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

七、与setup一同使用

注入的类可以通过 useCssModule API 在 setup()<script setup> 中使用:

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

八、动态 CSS

单文件组件的 <style> 标签可以通过 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>
Nach dem Login kopieren

🎜 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 <slot/> 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 <style> , 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🎜🎜🎜🎜<style module>-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 <style>-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!

Verwandte Etiketten:
Quelle:juejin.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