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

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

一、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>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/932700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存