/deep/ 深度作用选择器作用及使用

之前在开发中遇到一个问题,vue项目结合 element ui 使用。

但是 element ui 的样式不一定符合我们的需求,这时我们就需要改变它的样式。

比如博主使用到了element ui 的对话框,我想要改变这个对话框标题的颜色,所以我需要在页面中审查元素找到对应的标签。

但是当我找到并且复制,然后试图去改变它的样式时,怎么都没办法改变。

我以为是权重的问题,所以我加 ! important,但是也毫无作用。

当我审查元素发现此样式就没有作用到,就相当于它没有找到这个元素,所以也就不存在改不改变样式的问题了。

这时我们就需要一个选择器能深度的帮助我们找到这个元素,比如 deep

vue组件中,在 style 设置为 scoped 的时候,里面在写样式对子组件是不生效的,如果想让某些样式对所以子组件都生效,可以使用 /deep/ 深度选择器。

这是我起初试图改变的方法(亲测无效):

.focus .el-dialog__title{
  color:red !important
}

这是使用deep后的方法(亲测有效):

.focus /deep/ .el-dialog__title{
  color:red;
}

原理就是通过找到父元素深度的找到我们需要改变的子元素,然后改变它的样式即可。

若/deep/后有多层嵌套:

/* 渲染前 */
  #app /deep/ button{
    background-color: yellow;
    span{
      color:blue;
    }
  }
/* 渲染后 样式有效 */
#app[data-v-7ba5bd90] button span {
    color: blue;
}

再换种写法 移动/deep/位置:

/* 渲染前 */
  #app button{
    /deep/ span{
      color:pink;
    }
  }
/* 渲染后 data-v-7ba5bd90是#app的属性 所以无效 */
#app button[data-v-7ba5bd90] span {
    color: pink;
}

再换一种 又加个子元素:

/* 渲染前 */
  #app button{
    span{
      /deep/ span{
        color:pink
      }
    }
  }
/* 渲染后 */
#app button span[data-v-7ba5bd90] span {
    color: pink;
}

综上可以看出.在哪里加的/deep/ ,data属性选择器就会跑到写的上一层去.

若写多个/deep/:

多个/deep/的情况下,只有最外层的/deep/有效,内层的其他/deep/都是无效的,写了也没意义,不建议写。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值