vue3 里的 deep

        最近在使用uniapp做一个小程序,界面里我想在初始的时候禁用底下的所有组件,所以字体颜色,背景色啥的都需要置灰。一般的组件 text,button,label,radio都没啥问题,唯独碰见了一个switch,让人抓瞎

 由图可以看到,其他的都可以置灰,只有switch不行。

我们来看看生成的源码

 vue里添加的是 switch,指定样式 disableswitch,可以看到在浏览器里实际添加了三层,里面有一层 uni-switch-wrapper ,再里面一层是 uni-switch-input uni-switch-input-checked

.uni-switch-wrapper {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
}
.uni-switch-input.uni-switch-input-checked {
    border-color: #007aff;
    background-color: #007aff;
}

可以看到就是这层来控制了颜色,所以需要改这层的颜色代码。这就用到了 deep 样式穿透

网上的资料很多写的都不全,说是vue,但是vue里还要区分vue2, vue3

样式也要区分 less 还是 scss

在我这里,一开始用了三种 /deep/  >>>  ::deep 

/deep/直接在界面就报错了,直接pass, >>>  ::deep 倒是不报错,但是尝试各种写法均不起作用。

>>> .uni-switch-wrapper ::deep .uni-switch-input.uni-switch-input-checked {
    border-color: $uni-text-color-disable;
    background-color: $uni-text-color-disable;
}

我以为需要把每一层的class都填写一遍 class 前面的 deep也是各种尝试。没有起作用。

后来一位群友提醒deep在不同的语言里有不同的样式,于是又在网上搜索一番,找到了这种写法 

::v-deep 

          ::v-deep .uni-switch-input.uni-switch-input-checked {
            border-color: $uni-text-color-disable;
            background-color: $uni-text-color-disable;
          }

终于成功!

这里也可以看到,穿透时可以直接用你要替换的class就可以,上面几层的样式可以统统不管。 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值