vue 组件不受全局样式影响_Vue 组件之间样式冲突
Vue 组件之间样式冲突
vue 组件化,各组件内都可以在 style 部分写样式,这些样式却不是相互独立的,最终组合在一起,难免就会产生样式的污染。
首先来看一下两个 vue 组件代码:
1.ParentTestStyle.vue
import childStyle from "./ChildTestStyle";
export default {
components: { childStyle },
name: "ParentStyle",
data() {
return {};
}
};
.testStyle {
background-color: blue;
width: 300px;
height: 100px;
font-size: 20px;
color: white;
line-height: 100px;
margin: 10px;
}
.ParentDIV {
background-color: darkgreen;
width: 300px;
height: 100px;
line-height: 100px;
margin: 10px;
font-size: 20px;
color: white;
}
2.ChildTestStyle.vue
export default {
name: "ChildStyle",
data() {
return {};
}
};
.testStyle {
background-color: red;
width: 300px;
height: 100px;
font-size: 20px;
color: white;
line-height: 100px;
margin: 10px;
}
.ChildDIV {
background-color: blueviolet;
width: 300px;
height: 100px;
line-height: 100px;
margin: 10px;
font-size: 20px;
color: white;
}
页面样式渲染效果如下:
001.png
结果分析:
该示例中
“testParentStyle”控件的样式并不是显示本组件内的样式.testStyle 中定义的背景蓝色,而是显示引用的子组件中的样式.testStyle 中定义的背景红色;
003.png
父组件中“污染控件”在本组件内并没有定义样式,而是引用了子组件中定义的样式.ChildDIV,结果也能按照子组件的样式定义进行显示;同样的,子组件中“污染控件”显示的是父组件中定义的样式。
004.png
这就能说明,两组件之间的样式不是完全隔离的,是存在相互冲突及污染的可能的。
为了保持组件样式的隔离独立性,VUE 中的 style 有一个 scoped 属性:
下面我们把这个属性给两个组件的样式定义中添加上看一下效果。
父组件样式修改如下:
.testStyle {
background-color: blue;
width: 300px;
height: 100px;
font-size: 20px;
color: white;
line-height: 100px;
margin: 10px;
}
.ParentDIV {
background-color: darkgreen;
width: 300px;
height: 100px;
line-height: 100px;
margin: 10px;
font-size: 20px;
color: white;
}
子组件样式修改类似。
页面效果:
005.png
通过观察对比,各组件的样式保持了隔离独立。
006.png
如图:样式中都会有一个特殊的 data id 标记将组件的样式私有化,scoped 域隔离。
据说,增加 scoped 子组件依然会继承父组件中的样式,进而造成 css 冲突污染,但是我测试发现不存在该问题。scoped 能够将各组件的样式锁定在组件内。
总结:
为了避免 vue 组件样式冲突污染,在设计组件样式的时候,尽量有一个全局观,定义样式类名等尽量命名规范化,防止造成命名一致进而相互影响。如果,需要完全隔离自定义专属样式,就使用 style 的 scoped 属性。
测试运行环境:
"dependencies": {
"vue": "^2.5.2",
"vue-resource": "^1.5.1",
"vue-router": "^3.0.1"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
vue 组件不受全局样式影响_Vue 组件之间样式冲突相关推荐
- uniapp 子组件 props拿不到数据_Vue组件间的几种通信方式
前言 最近在刷面试题时,看见这个问题便做了个总结,欢迎各位补充!!! 为了更好的阅读性,请使用掘金访问 1.props & $emit--适用于父子组件通信 父组件通过prop向子组件传递数据 ...
- vue 组件不受全局样式影响_组件库引入全局样式lib/style/index.css,会污染全局基础样式...
I have searched the issues of this repository and believe that this is not a duplicate. Version 1.3. ...
- vue点击input框出现弹窗_vue组件实现弹出框点击显示隐藏效果
本文实例为大家分享了vue实现弹出框点击显示隐藏的具体代码,供大家参考,具体内容如下 效果如下图 由于我的更改密码弹出框是一个组件引用的,所以在一开始是隐藏的,这就需要在当前的页面上对弹出框组件设置v ...
- vue如何实现在页面上画画_vue组件:canvas实现图片涂鸦功能
方案背景 需求 需要对图片进行标注,导出图片. 需要标注N多图片最后同时保存. 需要根据多边形区域数据(区域.颜色.名称)标注. 对应方案 用canvas实现涂鸦.圆形.矩形的绘制,最终生成图片bas ...
- uniapp 子组件 props拿不到数据_Vue组件间的通信
人之间的感情是复杂的以及需要维护的,那么就免不得各种打电话 你有多久没有打电话了呢? 你又有多久没有收到电话了呢? 你还记得你的手机来电铃声吗???? 爸爸给儿子打电话 ☎️ 父组件通过使用v-bin ...
- props传递对象_vue组件中使用props传递数据的实例详解
在 Vue 中,父子组件的关系可以总结为 props向下传递,事件向上传递.父组件通过 props 给子组件下发数据,子组件通过事件给父组件发送消息.看看它们是怎么工作的. 一.基本用法 组件不仅仅是 ...
- mpvue 转uniapp 导航栏样式错乱问题修复 tabbar 样式修复
效果图:修改前,修改后 找了半天没找到原因,只能自己改样式了,下面是样式代码(在app.vue 里面加上就行) <style>/*每个页面公共css */uni-tabbar {box-s ...
- vue 组件全局封装_vue组件封装共用的方法
这里提供两种vue封装共用组件的方法 方法一: main.js中import ListItem from './components/list.vue'//封装共用组件方法一 Vue.componen ...
- vue 修改div宽度_Vue 组件通信方式及其应用场景总结(1.5W字)
前言 相信实际项目中用过vue的同学,一定对vue中父子组件之间的通信并不陌生,vue中采用良好的数据通讯方式,避免组件通信带来的困扰.今天笔者和大家一起分享vue父子组件之间的通信方式,优缺点,及其 ...
最新文章
- python写一个表白程序带时间_Python 打造最强表白程序
- c语言中如何自定义sort,c – 如何重载自定义std :: sort比较函数?
- tensorflow fetch 取回某个值
- word2vec原理(五):skip-gram和CBOW模型代码实现
- 【数字信号处理】 第二章、时域中的离散时间信号
- [网站seo优化] 史上最全增加外链的方法!
- printdocument python_python学习笔记之wxpython打印预览
- 归并排序 c++_数据结构:排序(4)||有序表的归并(归并排序)、基数排序
- PS给人物添加阴影和高光
- 2022微软中国在苏州北京上海等城市共有700多职位热招,欢迎自荐推荐转发
- IndexError: index 0 is out of bounds for axis 0 with size 0
- 互联网江湖“黑话”一览——狼厂、猫厂、鹅厂、狗厂……
- SDR# (SDRSharp)代码讲解 (二)
- SQL server更改表的架构名称——修改表名前缀为[dbo]
- 【深度学习】时间注意力模块与空间注意力模块
- 基础语法值c++提高编程
- html 一键复制功能以及下载功能
- python独热编码作用_关于sklearn独热编码
- QOS 之 WRED
- Introduction To AMBA 简单理解
热门文章
- mysql和oracle中进行工资查询后修改
- 【SEED Labs 2.0】Virtual Private Network (V*N) Lab
- 和大家分享一批android应用和游戏的源码
- 当导入js文件时报了Cannot set property 'marginRight' of undefined
- Scrapy 框架抓取美拍视频
- sqlalchemy查询,with_entities,label的使用
- vue3数组操作学习
- PermissionError: [Errno 13] Permission denied 如何解决
- 一步一步走向人生巅峰,成就富一代,铸就富二代,培育富三代-------
- Quartus II 9.1的安装与破解