微信自定义组件修改其他组件样式

1、需求:需要在微信的一个组件内改引用的其他组件样式属性,发现不能直接像在page上直接修改,也没有vue的:v-deep、/deep/之类的样式穿透

2、解决:怎么处理这种样式隔离问题呢

微信里面有种属性就是指定特殊的样式隔离选项styleIsolation,官网网址:

https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E7%BB%84%E4%BB%B6%E6%A0%B7%E5%BC%8F%E9%9A%94%E7%A6%BB

Component({
...
  options: {
    styleIsolation: 'shared'
  }
...
})

从小程序基础库版本 2.10.1 开始,也可以在页面或自定义组件的 json 文件中配置 styleIsolation (这样就不需在 js 文件的 options 中再配置)

{
  "component": true,
  "styleIsolation":"shared",
  "usingComponents": {}
}

styleIsolation 选项从基础库版本 2.6.5 开始支持。它支持以下取值:

isolated 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响(一般情况下的默认值);
apply-shared 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面;
shared 表示页面 wxss 样式将影响到自定义组件,自定义组件 wxss 中指定的样式也会影响页面和其他设置了 apply-shared 或 shared 的自定义组件。(这个选项在插件中不可用。)

使用后两者时,请务必注意组件间样式的相互影响。

如果这个 Component 构造器用于构造页面 ,则默认值为 shared ,且还有以下几个额外的样式隔离选项可用:

page-isolated 表示在这个页面禁用 app.wxss ,同时,页面的 wxss 不会影响到其他自定义组件;
page-apply-shared 表示在这个页面禁用 app.wxss ,同时,页面 wxss 样式不会影响到其他自定义组件,但设为 shared 的自定义组件会影响到页面;
page-shared 表示在这个页面禁用 app.wxss ,同时,页面 wxss 样式会影响到其他设为 apply-shared 或 shared 的自定义组件,也会受到设为 shared 的自定义组件的影响。
posted @ 2022-04-22 17:19  Pavetr  阅读(698)  评论(0编辑  收藏  举报