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 相关文章推荐
解读IE和firefox下JScript和HREF的执行顺序
Jan 12 Javascript
JS查看对象功能代码
Apr 25 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
Vue-cli3.x + axios 跨域方案踩坑指北
Jul 04 Javascript
Vue实现附件上传功能
May 28 Javascript
从0搭建vue-cli4脚手架
Jun 17 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 删除无限级目录与文件代码共享
2008/11/22 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php数组随机排序实现方法
2015/06/13 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python字符串替换示例
2014/04/24 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
旅游专业职业生涯规划范文
2014/01/13 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书