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 相关文章推荐
利用javascript中的call实现继承
Jan 22 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
node.js中的http.request.end方法使用说明
Dec 10 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
浅谈js原生拖放
Nov 21 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
Feb 27 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 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 CURL获取返回值的方法
2014/05/04 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python实现自动访问网页的例子
2020/02/21 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
小学母亲节活动方案
2014/03/14 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
客房服务员岗位职责
2015/02/09 职场文书
竞聘书的秘诀
2019/04/02 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android