css中scoped,deep的原理

81 阅读1分钟

1. scoped

为组件实例生成一个唯一标识,给组件中的每个标签对应的dom元素添加一个标签属性,data-v-xxxx 给中的每个选择器的最后一个选择器添加一个属性选择器,原选择器[data-v-xxxx],如:原选择器为.example h1,则更改后选择器为.example h1[data-v-1a161d4c]

<div id="app" data-v-1a161d4c>  <div class="example" data-v-1a161d4c>    <h1 data-v-1a161d4c>Title</h1>    <p data-v-1a161d4c>Content</p>  </div></div>

然后通过css属性选择器,使css样式仅作用于当前组件

.example h1[data-v-1a161d4c] {  font-size: 20px;}

2. deep (‘>>>’)

作用:可以在父组件中修改子组件非根节点的样式

原理:父组件和子组件都有scoped时,导致编译时的hash对不上,用了样式穿透后,在deep之后的选择器最后就不会加上标识

参考:blog.csdn.net/weixin\_452…