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 相关文章推荐
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
Aug 25 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信公众号H5支付接口调用方法
Jan 10 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
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python中sys.argv函数精简概括
2018/07/08 Python
python绘制多个曲线的折线图
2020/03/23 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Python删除n行后的其他行方法
2019/01/28 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
2019年.net常见面试问题
2012/02/12 面试题
制作部班长职位说明书
2014/02/26 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
财务稽核岗位职责
2015/04/13 职场文书
拔河比赛新闻稿
2015/07/17 职场文书