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 相关文章推荐
DWR Ext 加载数据
Mar 22 Javascript
Js组件的一些写法
Sep 10 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
Feb 20 Javascript
提高jQuery性能优化的技巧
Aug 03 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
小程序实现左滑删除功能
Oct 30 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
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
德生S2000电路分析
2021/03/02 无线电
PHP4和PHP5共存于一系统
2006/11/17 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
php内嵌函数用法实例
2015/03/20 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python Property属性的2种用法
2015/06/21 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
专业实习自我鉴定
2013/10/29 职场文书
教学大赛获奖感言
2014/01/15 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
学雷锋倡议书
2015/01/19 职场文书
大学生求职意向书
2015/05/11 职场文书
地道战观后感300字
2015/06/04 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP