Vue组件间的样式冲突污染问题详解

作者:未及545 时间:2023-07-02 16:59:33 

默认情况下,写在.vue组件中的样式会全局生效,因此很容易造成多个组件之间的样式冲突问题。

导致组件之间样式冲突的根本原因是:

  • 单页面应用程序中,所有组件的dom结构,都是基于唯一的index.html页面进行呈现的。

  • 每个组件中的样式,都会影响整个index.html页面中的dom元素。

给left.vue文件中的p标签添加一个字体样式

<template>
 <div>
   <p >left组件</p>
   <MyCount :num="4"></MyCount>
 </div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
   MyCount
}
}
</script>
<style>
p{color:red}
</style>

Vue组件间的样式冲突污染问题详解

此时发现页面right.vue文件也受影响变成红色了

<template>
 <div>
   <!-- 给单个页面添加固定的自定义data-v-001属性,如此就能解决冲突问题
   一个页面最好用同一个,防止混乱
   -->
   <!-- <p data-v-001>left组件</p> -->
   <p >left组件</p>
   <MyCount :num="4"></MyCount>
 </div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
   MyCount
}
}
</script>
<!-- 只不过上面的方法一个一个添加太过麻烦
直接在style标签上添加scoped也能解决组件样式冲突,
因为他会自动帮我们生成data-v-number
-->
<style scoped>
p{color:red}
</style>

/deep/的使用

<template>
 <div>
   <p >left组件</p>
   <MyCount :num="4"></MyCount>

</div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
   MyCount
}
}
</script>
<style scoped>
p{color:red}
/* 给count组件加样式,left和right文件都加,但是发现效果是受right的样式影响
,这是因为right没有加scoped,而此时我们想要给left文件加样式呢?
标签前面加个/deep/就行了,加上deep是[data--38a98c97] h5这样显示的,不加是h5[data--38a98c97]
这样显示的
*/
/* 在父组件中修改子组件样式,可用deep */
/deep/ h5{
   color:orange;
}
</style>

当使用第三方组件库的时候,如果要修改第三方组件默认样式的时候,也需要用到/deep/

来源:https://blog.csdn.net/qq_72760247/article/details/127400877

标签:Vue,组件样式,冲突
0
投稿

猜你喜欢

  • Windows自动执行python脚本操作步骤

    2023-04-22 15:32:42
  • python人工智能算法之决策树流程示例详解

    2022-02-27 17:34:31
  • python构建基础的爬虫教学

    2023-09-28 04:24:38
  • 基于PyQt5制作一个表情包下载器

    2022-02-23 13:30:58
  • Go语言针对Map的11问你知道几个?

    2024-05-05 09:33:19
  • Python内置加密模块用法解析

    2021-09-17 02:26:19
  • SQL Server 2005数据转换服务设计问题集锦

    2008-12-26 17:29:00
  • Vue实现web分页组件详解

    2024-04-30 10:39:27
  • python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    2022-08-26 07:14:52
  • Python随机生成均匀分布在三角形内或者任意多边形内的点

    2022-02-15 22:02:14
  • python实现将pvr格式转换成pvr.ccz的方法

    2022-09-01 05:54:14
  • pyshp创建shp点文件的方法

    2023-06-30 03:15:29
  • MySQL字符串前缀索引使用

    2024-01-22 17:58:58
  • 关于淘宝商城新版的一点看法

    2009-06-28 16:00:00
  • 一张图带我们入门Python基础教程

    2021-07-27 14:19:15
  • 从git仓库中删除.idea文件夹的小妙招

    2022-10-29 04:12:00
  • 跟老齐学Python之集合的关系

    2023-02-04 22:32:27
  • 利用Opencv实现图片的油画特效实例

    2022-01-26 14:31:59
  • python3实现名片管理系统(控制台版)

    2021-06-28 14:34:14
  • python实现图像检索的三种(直方图/OpenCV/哈希法)

    2021-08-11 17:15:08
  • asp之家 网络编程 m.aspxhome.com