1️⃣ 前言
在使用vue构建项目的时候,引用了第三方组件库,只需要在当前页面修改第三方组件库的样式以做到不污染全局样式。通过在样式标签上使用scoped达到样式只制作用到本页面,但是此时再修改组件样式不起作用。
1️⃣ 通过 >>> 穿透 scoped 来修改第三方组件库的样式
需要在组件上为第三方组件库加一个包裹层然后加一个类名
<style scoped>
#box >>> p {
font-size: 30px;
}
</style>
有些Sass 、Less之类的预处理器无法正确解析 >>>。可以使用 /deep/ 操作符( >>> 的别名)
<style scoped>
/deep/ #box p {
font-size: 30px;
}
</style>
1️⃣ 最佳实践
穿透方法实际上违反了 scoped 属性的意义。而且在vue中过多使用 scoped 导致页面打包文件体积增大。通常能写在 index 中的样式尽量写在 index 中,我们可以通过在 index 样式中通过外层组件添加唯一 class 来区分组件+第三方样式来实现了类似于 scoped 的效果,又方便修改各种第三方组件的样式。
<style lang="less">
.content{
.a{}
.b{}
......
}
</style>
[