位置:- 正文

vue中深度选择器(css deep深度选择器)

编辑:rootadmin
vue中深度选择器 scoped的作用

推荐整理分享vue中深度选择器(css deep深度选择器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue深入浅出,vue深度选择器deep写法,css deep深度选择器,vue深入浅出,css deep深度选择器,vue diff深度优先,vue diff深度优先,vue 深度选择器,内容如对您有帮助,希望把文章链接给更多的朋友!

scoped 可以使当前的样式只在自己当前的组件内起作用。为了防止在一个组件内引入了子组件,而子组件没有加scoped。这个时候如果父子组件有相同的类名,就会产生样式的影响。 原理: 加了scoped就相当于给当前组件所有的标签添加一个【data-v-hash】的属性,而vue中采用的是属性选择器的方式来进行解析,具体解析如下图:

<style scoped></style>

scoped对父子组件的影响

首先,我定义了一个父组件和子组件(child)

vue中深度选择器(css deep深度选择器)

父组件: 子组件(加了scoped): 效果: 我们可以看到,子组件加了scoped后,父组件对h3的css样式就不会影响到子组件,如果子组件没加scoped,就会影响到也变成红色。 那么,我们就是想在子组件有scoped的情况下,影响到子组件的样式怎么办?就引出了深度选择器

深度选择器

首先,我们来认识下三个深度选择器:

原生css: >>> (在没有用less/scss的时候使用) less: /deep/ scss: ::v-deep(如果使用了预处理器都可以使用这个(推荐))

我们上面的实例没有用到scss和less,所以我们使用>>> 效果: 子组件也变成了红色

附加:

/deep/ 如果项目中用到了预处理器 sass less scss 会因为无法编辑而报错 可以使用/deep/ 注意:vue-cli3以上版本不可以

<style lang="scss" scoped>/*用法1*/.a { /deep/ .b { /* ... */ }} /*用法2*/.a /deep/ .b { /* ... */ }</style>

::v-deep 如果使用了预处理器都可以使用

<style lang="scss" scoped>/*用法1*/.a{ ::v-deep .b { /* ... */ }} /*用法2*/.a ::v-deep .b { /* ... */}</style>注意:

我们深度处理器经常用在这样的情况: 例如你使用了ElementUI的走马灯(轮播图)组件,你想修改其中的样式,但是你设置样式不起作用,这个时候就是因为组件的scoped的影响。 解决办法: 1.不妨试试我们的深度处理器吧。(推荐) 2.将 scoped 移除。 3.新建一个没有 scoped 的 style(一个.vue文件允许多个style),如下:

<style scoped>//有scoped的style,此处放当前组件的css代码</style><style>//没有scoped的style,此处放修改ElementUI轮播图的css</style>
本文链接地址:https://www.jiuchutong.com/zhishi/299228.html 转载请保留说明!
下一篇链接:https://www.jiuchutong.com/zhishi/299229.html
免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络