vue组件使用scoped实现组件的私有样式以及/deep/深度作用选择符

一、scoped

默认组件style中定义的样式是全局的,在使用webpack打包时,存在相同名字覆盖的问题,为了解决多组样式名相同出现冲突的问题,此时就可以在style标签中加上scope属性。
原理:
在style中加上scoped属性,就会在此组件中的标签上加上一个随机生成以data-v开头的属性。而且必须是当前组件的元素或者子组件的根元素,才会有这个自定义的属性。
在这里插入图片描述
在这里插入图片描述

二、/deep/深度作用符

当父子组件都是用了scoped的情况下,如何在父组件中控制子组件的样式,这个时候就可以用到 /deep/ 深度作用选择符。父组件中控制子组件元素或者类名,覆盖样式,需要在前面加上/deep/.
父组件

<template>
  <div class="box">
    <h1 class="red">父组件</h1>
    <hr />
    <Child />
  </div>
</template>

<script>
import Child from '@/components/Child'
export default {
  components: {
    Child,
  },
 }
</script>

<style scoped>
 .red {
   color: blue;
 }
 .box /deep/ h2 {
   color: lawngreen;
 }
</style>

子组件

<template>
  <div>
     <h2>子组件</h2>
     <p class="red">
      <span>123</span>
    </p>
  </div>
</template>

<script>
export default {

}
</script>

<style scoped>
 .red {
   color: red;
 }
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值