首页IT科技vue 深度作用选择器(vue中深度选择器)

vue 深度作用选择器(vue中深度选择器)

时间2025-05-04 03:06:22分类IT科技浏览3601
导读:scoped的作用...

scoped的作用

scoped

可以使当前的样式只在自己当前的组件内起作用            。为了防止在一个组件内引入了子组件            ,而子组件没有加scoped                  。这个时候如果父子组件有相同的类名                  ,就会产生样式的影响      。

原理: 加了scoped就相当于给当前组件所有的标签添加一个【data-v-hash】的属性      ,而vue中采用的是属性选择器的方式来进行解析         ,具体解析如下图: <style scoped> </style>

scoped对父子组件的影响

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

父组件:

子组件(加了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>

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo如何做网站优化(88个seo网站优化基础知识点) 反链和外链是什么意思(SEO中的反链是什么意思)