遇到过一个问题,在一个页面中引用了公共组建,在加有scoped的style上无法修改其样式,去掉是有效果的,scoped: 用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件有作用域的 CSS 和子组件有作用域的 CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。查看 DOM 结构发现:vue 通过在DOM结构以及css 样式上加唯一不重复的标记,以保证唯一,达到样式私有化模块化的目的。具体的渲染结果是怎样的,通过一个例子来说明。给 HTML 的DOM 节点加一个不重复data 属性(形如:data-v-2311c06a)来表示他的唯一性在每句 css 选择器的末尾(编译后的生成的css语句)加一个当前组件的data 属性选择器(如[data-v-2311c06a])来私有化样式大家都知道 通过以上其他文件中的描述,scoped渲染时会给html标签加上data-类似的标记,以保证私有不重复,公共组件存在类的会导致失败(我自己的理解,权重变得复杂原因)。 解决方案: 根据网上提供的文档地址: 找到方案:>>> 符号(只为选择器作用的更深,至此,问题解决!) (2020-04-16补充:)/deep/ 等同于 >>> 深度作用选择器如果你希望
上述代码将会编译成:
有些像 Sass 之类的预处理器无法正确解析 |
|