Vue3 style中新增的特性如何使用
本文小编为大家详细介绍“Vue3 style中新增的特性如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3 style中新增的特性如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
style新特性
Vue3.2版本对单文件组件的style样式进行了很多升级,如局部样式、css变量以及样式暴露给模板使用等。
一、局部样式
当 <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></style> <style scoped></style>
六、支持CSS Modules
<style module>
标签会被编译为 CSS Modules 并且将生成的 CSS 类键暴露给组件:
默认以$style
对象暴露给组件;
<template> <p :class="$style.red"> This should be red </p></template> <style module>.red { color: red;}</style>
可以自定义注入module名称
<template> <p :class="classes.red">red</p></template> <style module="classes">.red { color: red;}</style>
七、与setup一同使用
注入的类可以通过 useCssModule API 在 setup()
和 <script setup>
中使用:
<script setup>import { useCssModule } from 'vue' // 默认, 返回 <style module> 中的类const defaultStyle = useCssModule() // 命名, 返回 <style module="classes"> 中的类const classesStyle = useCssModule('classes')</script>
八、动态 CSS
单文件组件的 <style>
标签可以通过 v-bind
这一 CSS 函数将 CSS 的值关联到动态的组件状态上:
<script setup>const theme = { color: 'red'}</script> <template> <p>hello</p></template> <style scoped>p { color: v-bind('theme.color');}</style>
读到这里,这篇“Vue3 style中新增的特性如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341