网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > Vue

vue中的样式穿透方法及原理

2023/4/20 22:11:57

样式穿透1、为什么需要穿透scoped? 引用了第三方组件后,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。此时只能通过特殊的方式,穿透scoped。2、样式穿透的方法 样式穿透的写法有三种:>>>、/deep/、:…

  • 样式穿透

1、为什么需要穿透scoped?

        引用了第三方组件后,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。此时只能通过特殊的方式,穿透scoped。

2、样式穿透的方法

        样式穿透的写法有三种:>>>、/deep/、::v-deep

        第一种方法:>>>

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

/*  用法:  */
div >>> .cla {
color: red;
}

        第二种方法:/deep/

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

/*  用法:  */
div /deep/ .cla {
color: red;
}

        第三种方法::v-deep

/*  用法:  */
div ::v-deep .cla {
color: red;
}

3、样式穿透原理

        scoped后选择器最后默认会加上当前组件的一个标识,比如[data-v-49729759]

        用了样式穿透后,在deep之后的选择器最后就不会加上标识。

        1.示例

        父组件:

<template>
  <div>
    <!-- 样式穿透 -->
    <cssdeepcom></cssdeepcom>
  </div>
</template>
<script>
import cssdeepcom from '../components/cssdeepcom'
export default {
  data(){
    return{
    }
  },
  components:{
    cssdeepcom,
  },
}
</script>
<style scoped>
.cssdeep /deep/ .cssdeepcom{
  background: blue;
}
</style>

        子组件:

<template>    
      <div></div>
    </template>
    <script>
    export default {
      data(){
        return{
        }
      },
    }
    </script>
    <style scoped>
    .cssdeepcom{
      width: 100px;
      height: 100px;
      background: red;
    }
    </style>

        通过以上内容我们知道了vue中的样式穿透方法及原理。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • vue兄弟平级组件如何传递参数值?

    vue组件传值不外乎三种,父传子、子传父、平级,今天我们就来着重说说vue平级组件如何传递参数值? 假设你有两个Vue组件需要通信: A 和 B ,A组件按钮上面绑定了点击事件,发送一则消息,B组件接收。初始化,全局创建$bus 直接在项目中的 main.js 初始化 …

    2023/1/7 13:08:32