>>> /deep/ ::v-deep 深度作用选择器
在写一些vue项目时候,经常会引入一些组件。无论是自定义组件还是引入的外部组件。style经常用scoped属性实现组件的私有化,防止影响到其他页面上的样式。但是有时需要在父组件中更改自组件的样式,比如要改变element-ui某个深层元素(eg:.el-input__inner)或其他深层样式时,就要用到组件穿透(也叫深度修改css,深度作用选择器)可用的方法有 >>> 、 /
在写一些vue项目时候,经常会引入一些组件。无论是自定义组件还是引入的外部组件。style经常用scoped属性实现组件的私有化,防止影响到其他页面上的样式。但是有时需要在父组件中更改子组件的样式,比如要改变element-ui某个深层元素(eg:.el-input__inner)或其他深层样式时,就要用到组件穿透(也叫深度修改css,深度作用选择器)
可用的方法有 >>> 、 /deep/ 、 ::v-deep
有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 或 ::v-deep 操作符取而代之——两者都是 >>> 的别名,同样可以正常工作。
>>>
如果项目style使用的是css 原生样式,那么你可以直接使用 >>> 穿透修改
<style lang="css" scoped>
/*编译前*/
.a >>> .b {
color:blue
}
/*编译后*/
.a[data-v-fsdfg9] .b { color:blue}
</style>
但是像scss等预处理器却无法解析>>>,所以我们使用下面的方式.
/deep/
项目style中用到了css预处理器 scss 、sass、less时, 操作符 >>> 可能会因为无法编译而报错 。可以使用 /deep/
<style scoped>
.a /deep/ .b {
color:blue
}
/*编译后*/
.a[data-v-fsdfg9] .b { color:blue}
</style>
但是在vue-cli3编译时,/deep/的方式会报错或者警告,导致变异报错。这个时候用::v-deep
::v-deep
::v-deep在预处理器 scss 、sass、less 比较通用
<style scoped>
/*编译前*/
.a{
::v-deep .b {
color:blue
}
}
.a ::v-deep .b {
color:blue
}
/*编译后*/
.a[data-v-fsdfg9] .b { color:blue}
</style>
切记必须是双冒号,是::v-deep而不是::deep
总结
当我们在项目中需要用额外的样式来打造自己的应用样式时,只能通过深度作用选择器
style为css时的写法如下
|
style使用css的预处理器(less, sass, scss)的写法如下
第一种/deep/
|
第二种::v-deep
|
建议使用第二种方式,/deep/在某些时候会报错,::v-deep更保险并且编译速度更快(网上没有找到相关资料,无从验证)。
参考文章链接:
vue组件样式穿透/deep/ ::v-deep >>>区别_前端攻城师老张的博客-CSDN博客_/deep/ v::deep
更多推荐
所有评论(0)