通常情况下,我们写样式穿透都是用 >>>
,或者 /deep/
<style scoped>
// 第一种常用方式
>>> class-name{}
// 第二种常用方式
/deep/ class-name{}
</style>
以上这两种方式正常情况下使用都没有问题,但在scss,less,sass等解析器中,>>>,/deep/可能都无法使用,这种情况可以采用::v-deep
,详见 vue官方文档,关于Scoped CSS介绍
<style lang="scss" scoped>
// 第三种常用方式
::v-deep class-name{}
</style>
微信小程序上,有可能会出现用了 >>>,/deep/,::v-deep
都不行的情况,这种情况下是由于微信官方的组件样式隔离,此时可在父子组件的 data
同级设置 option,微信官方文档解释
export default {
options: { styleIsolation: 'shared' }
}
`styleIsolation` 选项从基础库版本 2.6.5 开始支持。它支持以下取值:
`isolated` 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响(一般情况下的默认值);
`apply-shared` 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面;
`shared` 表示页面 wxss 样式将影响到自定义组件,自定义组件 wxss 中指定的样式也会影响页面和其他设置了 `apply-shared` 或 `shared` 的自定义组件。(这个选项在插件中不可用。)