聊聊Vue3 style中新增了哪些特性(汇总)

 3036

Vue3对style样式进行了升级,下面本篇文章给大家汇总分享一下Vue3 style的新特性,希望对大家有所帮助!


聊聊Vue3 style中新增了哪些特性(汇总)


Vue3.0后推出的setup函数,像写JS一样开发Vue组件,此外style也加入了很多新特性,如引入了变量和函数,使css复用性更强...

style新特性

Vue3.2版本对单文件组件的style样式进行了很多升级,如局部样式、css变量以及样式暴露给模板使用等。


一、局部样式

当 <style> 标签带有 scoped attribute 的时候,它的 CSS 只会应用到当前组件的元素上:

  1. <template>
  2.   <div class="example">hi</div>
  3. </template>
  4.   
  5. <style scoped>
  6. .example {
  7.   color: red;
  8. }
  9. </style>


二、深度选择器

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

  1. <style scoped>
  2. .:deep(.b) {
  3.   /* ... */
  4. }
  5. </style>

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


三、插槽选择器

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

  1. <style scoped>
  2. :slotted(div) {
  3.   color: red;
  4. }
  5. </style>


四、全局选择器

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

  1. <style scoped>
  2. :global(.red) {
  3.   color: red;
  4. }
  5. </style>


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

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

  1. <style>
  2. /* global styles */
  3. </style>
  4.   
  5. <style scoped>
  6. /* local styles */
  7. </style>


六、支持CSS Modules

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

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

  1. <template>
  2.   <p :class="$style.red">
  3.     This should be red
  4.   </p>
  5. </template>
  6.   
  7. <style module>
  8. .red {
  9.   color: red;
  10. }
  11. </style>

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

  1. <template>
  2.   <p :class="classes.red">red</p>
  3. </template>
  4.   
  5. <style module="classes">
  6. .red {
  7.   color: red;
  8. }
  9. </style>


七、与setup一同使用

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

  1. <script setup>
  2. import { useCssModule } from 'vue'
  3.   
  4. // 默认, 返回 <style module> 中的类
  5. const defaultStyle = useCssModule()
  6.   
  7. // 命名, 返回 <style module="classes"> 中的类
  8. const classesStyle = useCssModule('classes')
  9. </script>


八、动态 CSS

单文件组件的 <style> 标签可以通过 v-bind 这一 CSS 函数将 CSS 的值关联到动态的组件状态上:

  1. <script setup>
  2. const theme = {
  3.   color: 'red'
  4. }
  5. </script>
  6.   
  7. <template>
  8.   <p>hello</p>
  9. </template>
  10.   
  11. <style scoped>
  12. {
  13.   color: v-bind('theme.color');
  14. }
  15. </style>


TAG标签:
本文网址:https://www.zztuku.com/index.php/detail-11981.html
站长图库 - 聊聊Vue3 style中新增了哪些特性(汇总)
申明:本文转载于《掘金社区》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐