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 相关文章推荐
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
js中的for如何实现foreach中的遍历
May 31 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
移除AngularJS下URL中的#字符的方法
Jun 19 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
vue使用echarts图表的详细方法
Oct 22 Javascript
对layui数据表格动态cols(字段)动态变化详解
Oct 25 Javascript
vue键盘事件点击事件加native操作
Jul 27 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
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
window下eclipse安装python插件教程
2017/04/24 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
python lxml中etree的简单应用
2019/05/10 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
python导入库的具体方法
2020/06/18 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
《青蛙看海》教学反思
2014/04/23 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2015年推普周活动总结
2015/03/27 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
python字典的元素访问实例详解
2021/07/21 Python