Vue组件间的样式冲突污染问题详解
作者:未及545 发布时间:2023-07-02 16:59:33
标签:Vue,组件样式,冲突
默认情况下,写在.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>
此时发现页面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


猜你喜欢
- 运行环境:IIS脚本语言:VBScript数据库:Access/SQL Server数据库语言:SQL1.概要:不论是在论坛,还是新闻系统,
- 本文介绍了Python日期的加减等操作的示例,分享给大家,也给自己留个笔记1. 日期输出格式化所有日期、时间的api都在datetime模块
- 目录1. 前言2. 介绍及安装3. 实战一下3-1 创建爬虫项目3-2 创建爬虫 Ai
- 前言之前,我们用pygame做了一个2D的Pong游戏,今天我们做一个3D的,游戏画面如下:用ad和←→
- 1.文件打开与关闭在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件open(文件名,访问模式)。 f = o
- python判断图片主色调,单个颜色:#!/usr/bin/env python# -*- coding: utf-8 -*-import
- FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, Op
- 四、XML应用分类 总的说来的XML的应用可分为四类: (1)应用于客户需要与不同的数据源进行交互时。数据可能来自不同的数据库,他们都有各自
- 实时画图import matplotlib.pyplot as pltax = [] # 定义一个 x 轴的空列表用来接收动态
- <? // 建立一个指向新COM组件的索引 $word = new C
- 目录1.技术背景2.问题复现3.解决思路4.总结概要1.技术背景笔者在执行一个Jax的任务中,又发现了一个奇怪的问题,就是明明只分配了很小的
- 1.功能简介此程序模拟员工信息数据库操作,按照语法输入指令即能实现员工信息的增、删、改、查功能。2.实现方法• 架构:本程序采用python
- 上文中,我们一起学习了手把手教你实现一个 Python 计时器。本文中,云朵君将和大家一起了解什么是上下文管理器 和 Python
- 本文为大家分享了卸载oracle11g的详细教程,供大家参考,具体内容如下准备工作:关闭防火墙,关闭杀毒软件1、win+R 输入servic
- Profile 和 cProfile在 Python 标准库里面有两个模块可以用来做性能测试。1. 一个是 Profile,它是一个纯 Py
- 前言最近工作中遇到一个需求,是根据用户连续记录天数来计算的,求出用户在一段时间内最大的连续记录时间,例如在 2016-01-01 和 201
- 从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为
- 尝试安装server[justin@xen20-vm04 "]$ rpm -ivh MySQL-server-5.1.51-1.g
- 最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据。采用分页一
- 本文实例讲述了ThinkPHP框架实现用户信息查询更新及删除功能。分享给大家供大家参考,具体如下:一 代码1、配置文件<?phpret