vue scoped 用法

作者: 凛冬已至_123 | 来源:发表于2019-08-27 18:49 被阅读0次

写Vue文件时,每个页面都是一个Vue文件,当我们想要设置本页面的样式,同时不影响其他页面的样式。一般有下面的方法可以实现:
1.设置唯一的class
2.在vue文件根目录设置唯一的class,使用scss语法嵌套书写本vue的样式

.rootClass{
  .class1{
  }
  .class2{
  }
}

3.使用vue的scoped属性

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

转换结果为:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>
<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

从上面的转换结果可以看出,scoped的作用就是把当前页面的代码,加上一个data-v-f3f3eg9的全局唯一属性,可以看作是当前页的唯一标识符,然后设置style的时候,加上这个唯一标识符.example[data-v-f3f3eg9]就可以直接设置指定元素的样式,而不影响其他页面

  • 注意点
    1.使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式-意思是组件根元素上也会添加data-v-f3f3eg9属性
    2.深度选择器
    如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符:
<style scoped>
.a >>> .b { /* ... */ }
</style>

上述代码将会编译成:

.a[data-v-f3f3eg9] .b { /* ... */ }

有些像 Sass 之类的预处理器无法正确解析>>>。这种情况下你可以使用 /deep/::v-deep 操作符取而代之——两者都是 >>> 的别名,同样可以正常工作。
详见文档vue-loader

相关文章

  • vue scoped 用法

    写Vue文件时,每个页面都是一个Vue文件,当我们想要设置本页面的样式,同时不影响其他页面的样式。一般有下面的方法...

  • vue中的scoped与css module区别

    scoped 简介原因:在vue中通常提倡使用scoped,因为scoped可以给vue当前页面添加作用域,避免全...

  • 面试中值得深思的问题

    vue scoped的作用是什么? 如何更改element-ui样式? CSS,VUE中 scoped不污染其他...

  • vue-cli里scoped:

    style的scoped: demo 当 标签有 scoped[https://vue-loader-v14....

  • 在vue项目中使用css module实现css的模块化编程

    CSS模块化,module替代scoped vue-loader中对于scoped以及module的介绍参考博文 ...

  • Vue学习01

    一、样式 style: scoped 一个 .vue文件可以包含多个 标签。 标签可以有scoped 或者modu...

  • 2020-09-09

    scoped 混入 数据结构 vue事务 map foreach vue数据双向绑定原理 computed 缓存

  • vuedose.tips(翻译系列二十)

    The importance of scoped CSS in Vue.js Hey there! I’m sor...

  • 笔记

    Vue Scoped CSS覆盖组件的样式 如果在 style 标签设置 scoped 属性,则它的样式只应用到当...

  • vue中使用css modules替代scoped

      最开始使用Vue的时候,是提倡并大量使用的是scoped的。   加上 scoped 属性的style会自动添...

网友评论

    本文标题:vue scoped 用法

    本文链接:https://www.haomeiwen.com/subject/nlxyectx.html