vue 样式穿透 尖括号3、/deep/ 、::v-deep 应用场景注意事项
官方文档地址,更多关于Scoped CSS的内容在很多vue的组件库 , 如vant,elementUI, iview等都可能自定义一些样式文件项目中用到了 elementui,如果使用预处理器 scss, sass,less , 修改样式可能修改不掉, 而且这种需求出现的频率非常高。但如果去掉scoped话又会影响全局样式。当然我们知道可以使用 样式穿透的方式操作那么究竟什么时候使用 >&
·
在很多vue的组件库 , 如vant,elementUI, iview
等都可能自定义一些样式文件
项目中用到了 elementui
,如果使用预处理器 scss, sass,less
, 修改样式可能修改不掉, 而且这种需求出现的频率非常高。但如果去掉scoped
话又会影响全局样式。当然我们知道可以使用 样式穿透的方式操作
那么究竟什么时候使用 >>>
什么时候使用 /deep/
和 ::v-deep
实际操作中会有什么问题呢?
1、>>>
如果项目使用的是css 原生样式
,那么你可以直接使用 >>>
穿透修改
<style scoped>
/*编译前*/
.a >>> .b {
/* ... */
}
/*编译后*/
.a[data-v-f3f3eg9] .b { /* ... */ }
</style>
2、/deep/
项目中用到了预处理器 scss 、sass、less 操作符 >>>
可能会因为无法编译而报错 。可以使用 /deep/
注意:vue-cli3以上版本不可以
<style lang="scss" scoped>
/*用法1*/
.a {
/deep/ .b {
/* ... */
}
}
/*用法2*/
.a /deep/ .b {
/* ... */
}
</style>
3、::v-deep
如果使用了预处理器都可以使用 ::v-deep
<style lang="scss" scoped>
/*用法1*/
.a{
::v-deep .b {
/* ... */
}
}
/*用法2*/
.a ::v-deep .b {
/* ... */
}
</style>
更多推荐
已为社区贡献20条内容
所有评论(0)