> 文章列表 > vue中scoped及样式穿透原理

vue中scoped及样式穿透原理

vue中scoped及样式穿透原理

一见如故

  • style中加scoped样式分离:
    1、为组件实例生成唯一标识,给组件中每个标签对应的dom元素添加一个标签属性,data-v-xxx
    2、给style scoped中的每个选择器的最后一个选择器添加一个属性选择器,如:
    .container #id div => .container #id div[data-v-xxx]
  • 样式穿透:用了样式穿透后的选择器最后就不会加标识了

例子

子组件
<template><div class="son"><h1>ssoonn</h1></div>
</template>父组件
<template><div class="father"><Son/></div>
</template>
<style scoped lang="less">
.father /deep/ .son > h1{color: red;
}
// 浏览器中
.father[data-v-fatherhash] .son > h1{color: red}