• vue中深度选择器


    scoped的作用

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

    <style scoped>
    </style>
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    <style lang="scss" scoped>
    /*用法1*/
    .a{
     ::v-deep .b { 
      /* ... */
     }
    } 
    /*用法2*/
    .a ::v-deep .b {
      /* ... */
    }
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意:

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

    <style scoped>
    	//有scoped的style,此处放当前组件的css代码
    </style>
    
    <style>
    //没有scoped的style,此处放修改ElementUI轮播图的css
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    二分查找及例题
    Golang和Java对比
    Web项目如何配置Eslint
    cy5-紫杉醇,cy5- taxol, cy5标记紫杉醇
    图像分类相关优质开源数据集汇总(附下载链接)
    GEE|时间序列分析(一)
    libyuv 再次封装打包与测试
    怎样把flac转换成mp3?四个步骤完成
    常见的内置函数、可迭代对象、迭代器对象、异常捕获、异常捕获的用途、生成器对象、模块、绝对导入与相对导入、包的概念、模块
    Java代码性能提升小Case
  • 原文地址:https://blog.csdn.net/Yan9_9/article/details/127695322