Vue3 a amélioré le style. Cet article résumera et partagera avec vous les nouvelles fonctionnalités du style Vue3. J'espère qu'il sera utile à tout le monde !
La fonction de configuration introduite après Vue3.0 développe des composants Vue tout comme l'écriture de JS. De plus, le style ajoute également de nombreuses nouvelles fonctionnalités, telles que l'introduction de variables et de fonctions, rendant le CSS plus réutilisable...
La version Vue3.2 a apporté de nombreuses mises à niveau au style des composants à fichier unique, tels que les styles locaux, les variables CSS et les styles exposés aux modèles. (Partage vidéo d'apprentissage : tutoriel vidéo Vue)
Lorsque la balise <style>
a l'attribut scoped
temps, son CSS ne sera appliqué qu'aux éléments du composant courant : <style>
标签带有 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 内容不会被作用域样式影响,但你仍然可以使用深度选择器来设置其样式。
默认情况下,作用域样式不会影响到 <slot/>
渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 :slotted
伪类以确切地将插槽内容作为选择器的目标:
<style scoped> :slotted(div) { color: red; } </style>
如果想让其中一个样式规则应用到全局,比起另外创建一个 <style>
,可以使用 :global
伪类来实现:
<style scoped> :global(.red) { color: red; } </style>
你也可以在同一个组件中同时包含作用域样式和非作用域样式:
<style> /* global styles */ </style> <style scoped> /* local styles */ </style>
<style module>
标签会被编译为 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>
注入的类可以通过 useCssModule API 在 setup()
和 <script setup>
中使用:
<script setup> import { useCssModule } from 'vue' // 默认, 返回 <style module> 中的类 const defaultStyle = useCssModule() // 命名, 返回 <style module="classes"> 中的类 const classesStyle = useCssModule('classes') </script>
单文件组件的 <style>
标签可以通过 v-bind
<script setup> const theme = { color: 'red' } </script> <template> <p>hello</p> </template> <style scoped> p { color: v-bind('theme.color'); } </style>
scoped
style. Utilisez la pseudo-classe :deep()
: 🎜rrreee🎜Le contenu DOM créé via v-html
ne sera pas affecté par les styles de portée, mais vous pouvez le faire. utilisez toujours le sélecteur de profondeur pour le styliser. 🎜
🎜🎜🎜🎜3. par défaut, les styles de portée n'affecteront pas le contenu rendu par <slot/>
car ils sont considérés comme étant détenus et transmis par le composant parent. Utilisez la pseudo-classe :slotted
pour cibler le contenu du slot exactement comme le sélecteur : 🎜rrreee🎜🎜🎜🎜 4. Sélecteur global 🎜🎜🎜🎜Si vous souhaitez qu'une des règles de style soit appliquée globalement, c'est mieux que d'en créer une autre <style> ;
, vous pouvez utiliser la pseudo-classe :global
pour obtenir : 🎜rrreee🎜🎜🎜🎜5. Mélangez les styles locaux et globaux🎜🎜🎜🎜Vous pouvez également inclure des styles avec et sans portée dans le même composant : 🎜rrreee🎜< La balise style module>
sera compilée dans $style
est exposé au composant 🎜rrreee🎜2 Vous pouvez personnaliser le nom du module injecté🎜rrreee🎜🎜🎜🎜7 Utilisé avec setup🎜🎜🎜🎜La classe injectée peut être transmise useCssModule🎜 API dans setup()
et <script setup>
Utilisé dans : 🎜rrreee🎜🎜🎜 🎜8. CSS dynamique🎜 🎜🎜🎜La balise <style>
d'un composant mono-fichier peut associer la valeur CSS à l'état du composant dynamique via le v-bind
. Fonction CSS : 🎜rrreee🎜 (Fin) 🎜(Partage de vidéos d'apprentissage : Développement web front-end, Vidéo de programmation de base)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!