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做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
jquery调整表格行tr上下顺序实例讲解
Jan 09 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
JavaScript中如何判断一个值的类型
Sep 15 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
JS表格的动态操作完整示例
Jan 13 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
ADODB类使用
2006/11/25 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
中间件分为哪几类
2012/03/14 面试题
运动会入场词100字
2014/02/06 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
2014年销售工作总结
2014/12/01 职场文书
成本会计岗位职责
2015/02/03 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python