使用scoped时,修改组件样式无法修改?试试使用深度选择器

首先大致解释一下scoped原理

scoped原理

通过观察DOM结构可以发现:vue通过在DOM结构以及css样式上加上唯一的标记,保证唯一,达到样式私有化,不污染全局的作用。

如图,样式上也会多一个该字符[data-v-14df2d4a],以保证唯一。

DOM结构添加新的属性
样式表添加属性选择器

这样子的作用就是父子组件也许都用到了同一个class名。

但是子组件中dom有标记属性[data-v-14df2d4a],并且子组件的样式表只作用到class选择器选择到的也拥有data-v-14df2d4a属性的dom节点。

(也就是子组件的样式不会作用到父组件中虽然class相同,但是没有拥有这个属性的dom节点)。

那为什么修改了外部组件库(如iview)中组件的样式不起作用呢?

如图可以看到,引入的组件没有添加上文中提到的作为标记的属性[data-v-14df2d4a]。

但是你写在带scoped的<style>中的样式选择器会被添加标记的属性。

所以作用不到组件。

image.png

解决方法是:

1、使用深度选择器/deep/,>>>

2、不使用scoped。(在平时的开发中,使用css预编译来达到使用BEM命名规范的效果,比较推荐使用这种方法)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • title: 风格指南type: style-guide 这里是官方的 Vue 特有代码的风格指南。如果在工程中使...
    ChenyuMa阅读 1,106评论 1 1
  • 本文发布在我的博客vue中慎用style的scoped属性许可协议: 署名-非商业性使用-禁止演绎4.0国际 ...
    2ue阅读 9,114评论 2 7
  • 这里是官方的 Vue 特有代码的风格指南。如果在工程中使用 Vue,为了回避错误、小纠结和反模式,该指南是份不错的...
    youins阅读 5,762评论 0 5
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,611评论 0 7
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,342评论 0 3