【CSS】scoped

定义

当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素。

通过该属性,可使组件之间的样式不互相污染。如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化。

实现原理

实现原理是给dom添加了一个独一无二的动态属性data-v-xxxxxxxx

而在对应css选择器后额外添加了一个对应属性选择器来选择

.example[data-v-xxxxxxxx] {  }

穿透scoped

在引用第三方组件时,在项目开发过程中要修改第三方组件的样式,又要实现样式模块化,需要通过穿透

<style scoped>
    外层 >>> 第三方组件 {
        样式
    }
</style>

在sass和less的穿透使用/deep/

<style scoped>
    外层 /deep/ 第三方组件 {
        样式
    }
</style>

这种情况还有一种解决方案是定义一个vue没有scoped,其内的样式就适用全局