在开发中修改第三方组件样式是很常见,但由于 scoped 属性的样式隔离,可能需要去除 scoped 或是另起一个 style 。这些做法都会带来副作用(组件样式污染、不够优雅),样式穿透在 css 预处理器中使用才生效。
我们可以使用>>>
或 /deep/
或::v-deep
解决这一问题:
<style scoped lang="stylus">
外层 >>> .el-checkbox {
display: block;
font-size: 26px;
.el-checkbox__label {
font-size: 16px;
}
}
</style>
<style scoped lang="less/scss">
/deep/.el-checkbox {
display: block;
font-size: 26px;
.el-checkbox__label {
font-size: 16px;
}
}
.testColor {
color: yellow;
span {
color: red;
}
}
// .testBox .testColor {
// color: green;
// }
.testBox .testColor2 {
color: green;
}
.testBox /deep/ .testColor {
color: green;
}
.testBox ::v-deep .testColor2 {
color: pink;
}
::v-deep .nationalColor { // 通用样式穿透
color: purple;
}
/deep/ .nationalColor { // 通用样式穿透2 好像不顶用
color: greenyellow;
}
</style>