vue scoped和scoped穿透

        vue文件中的style标签上会有一个特殊属性scoped。当一个style标签拥有scoped属性时,他的css样式只能作用于当前的vue组件,可以使组件的样式不相互污染。如果一个项目的所有style标签都加了scoped属性,相当于完成了样式的模块化。

一、scoped的实现原理

scoped渲染规则:

1、给html的dom节点添加一个不重复的data属性(如:data-v-5558831a)来唯一标识这个dom元素

2、给每句css选择器的末尾加一个当前组件的data属性选择器(如:[data-v-5558831a])来私有化样式

转译前

<template>
    <div class="example">scoped</div>
</template>
<style scoped>
    .example{
        color:red;
    }
</style>

转译后

<template>
    <div class="example" data-v-5558831a>scoped</div>
</template>

.example[data-v-5558831a] {
  color: red;
}

二、scoped穿透

        在vue项目中,当我们引入第三方插件时,需要在局部组件中修改第三方插件的样式,又不想去掉scoped属性;

1、stylus的样式穿透使用 >>>

外层 >>> 第三方组件{
    样式
}

.wrapper >>> .el-checkbox{
    background:#fff
}

2、sass和less样式穿透使用/deep/

外层 /deep/ 第三方组件{
    样式
}
/deep/ .el-checkbox{
    background:#fff;
}

3、vue-cli3编译时,有时deep的方式会报错或者警告,这时候用第三种

::v-deep .b {
    background:#fff;    
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值