Vue scoped及deep使用方法解析


Posted in Javascript onAugust 01, 2020

众所周知,在组件中给style 标签添加属性 scoped 属性可以避免组件内样式对外界造成污染,scoped使得组件内的样式变成局域样式,只作用于当前组件。

原理如下-------

在编译组件的时候,如果当前组件内style标签上有scoped属性,那么会在当前所有标签上添加一个【data-v-hash】属性,而当前样式表内的所有末尾选择器后面也会加上该属性,那么就使得当前组件内的样式只会作用于当前组件内的元素。值得注意的是,当父组件,子组件同时使用scoped属性时,子组件最外层的标签既会被加上当前组件的hash值,又会加上父级组件的hash值,像这样

//子组件最外层标签
<div data-v-b45036b2 data-v-384b136e ></div>

但是有个问题------

在我们用scoped的时候回发现一个问题,就是我们在当前组件内使用的scoped,但是我想在当前组件内改变子组件的样式(非最外层标签),的时候会发现不好使。

<style scoped>
.father-div .child-div{color:red;}
</style>

因为到了浏览器上会解析成

<div data-v-384b136e ></div> 

不好使的原因是应为父组件内样式内解析的是父组件的hash值,而子组件内标签上添加的是子组件的hash值,对应不上当然没效果,那怎么解决呢?

使用deep------

当遇到这种困扰的时候我们可以另写一个style标签,然后不加scoped属性,来盖子组件的样式,当前这么写是可以的,但是不太优雅,这时我们可以用到/deep/属性,

.father-div /deep/ .child-div{color:red;}

当遇到"/deep/"的时候会将"/deep/"的位置替换成组件的hash值,解析成

.father-div[data-v-b45036b2] .child-div{color:red;}

这样只需要注意css的权重就可以覆盖子组件内的样式了,

注意:子组件内最外层的样式由于是带了父子组件的两个hash值,所以是会被两头控制的,不需要/deep/就可以在父组件内覆盖样式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现图片轮换效果代码
Apr 16 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
老生常谈 关于JavaScript的类的继承
Jun 24 Javascript
微信小程序 wxapp视图容器 view详解
Oct 31 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
Jul 18 Javascript
基于node.js实现爬虫的讲解
Feb 18 Javascript
用js实现放大镜效果
Oct 28 Javascript
Vue中computed及watch区别实例解析
Aug 01 #Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 #Javascript
vue 组件简介
Jul 31 #Javascript
three.js 制作动态二维码的示例代码
Jul 31 #Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 #Javascript
vue抽出组件并传值实例
Jul 31 #Javascript
Vue通过Blob对象实现导出Excel功能示例代码
Jul 31 #Javascript
You might like
ThinkPHP中session函数详解
2016/09/14 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
javascript模拟枚举的简单实例
2014/03/06 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
python中Mako库实例用法
2020/12/31 Python
python+opencv实现车道线检测
2021/02/19 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
大学生应聘求职信
2014/05/26 职场文书
校园元旦活动总结
2014/07/09 职场文书
学生实习证明范文
2014/09/28 职场文书
2015年端午节活动总结
2015/02/11 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
创业计划书介绍
2019/04/24 职场文书
Vue的过滤器你真了解吗
2022/02/24 Vue.js