使用depp在小程序中子组件修改第三方ui库uview,样式不生效问题

项目场景:

在小程序中使用第三方的ui库,封装了一个功能,用到了里面的一个组件,个性化设置,方便复用


问题描述

使用depp样式修改在h5端是可以正常显示的,但在小程序中 无效果。
如果是在小程序的根文件(可理解为通过路径可以访问的-父级页面)中,直接引用某一个组件,是可以使用deep修改当前组建样式的
但如果你在父文件中引入一个组件,然后想要在这个组件中使用deep修改样式是无效的,h5端可以正常显示,小程序不行
好玩的是,当你在父组件中,使用deep直接去修改子组件中ui库的样式 又是可以的


原因分析

在wxss中 默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。除非以下两种情况:

  • app.wxss 或页面的 wxss 中使用了标签名选择器(或一些其他特殊选择器)来直接指定样式,这些选择器会影响到页面和全部组件。通常情况下这是不推荐的做法。
  • 指定特殊的样式隔离选项 styleIsolation 。
Component({
  options: {
    styleIsolation: 'isolated'  // 默认情况
  }
})

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

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

组件样式隔离文档地址


解决方案:

在子组件中添加 optionsdata同级别 展示

export default {
    data() {
        return {}
    },
    options: {
        styleIsolation: 'shared' // 解除样式隔离
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值