美文网首页
vue 样式穿透 >>>、/deep/ 、::v-deep 、:

vue 样式穿透 >>>、/deep/ 、::v-deep 、:

作者: Prince_0716 | 来源:发表于2022-02-28 15:43 被阅读0次

    官方文档地址,更多关于Scoped CSS的内容

    在很多vue的组件库 , 如vant,elementUI, iview等都可能自定义一些样式文件

    项目中用到了 elementui,如果使用预处理器 scss, sass,less , 修改样式可能修改不掉, 而且这种需求出现的频率非常高。但如果去掉scoped话又会影响全局样式。当然我们知道可以使用 样式穿透的方式操作

    那么究竟什么时候使用 >>> 什么时候使用 /deep/ 和 ::v-deep 实际操作中会有什么问题呢?

    1、>>>

    如果项目使用的是css 原生样式,那么你可以直接使用 >>> 穿透修改

    <style scoped>
    /*编译前*/
    .a >>> .b { 
     /* ... */
    }
    
    /*编译后*/
    .a[data-v-f3f3eg9] .b { /* ... */ }
    </style>
    

    2、/deep/

    项目中用到了预处理器 scss 、sass、less 操作符 >>> 可能会因为无法编译而报错 。可以使用 /deep/
    注意:vue-cli3以上版本不可以

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

    3、::v-deep

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

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

    4、:deep(<inner-selector>)

    [@vue/compiler-sfc]::v-deep usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead.

    ::v-deep 用作组合器已被弃用。 使用 :deep(<inner-selector>) 代替。

    相关文章

      网友评论

          本文标题:vue 样式穿透 >>>、/deep/ 、::v-deep 、:

          本文链接:https://www.haomeiwen.com/subject/aumlrrtx.html