在Vue项目中用的比较多的就是组件,为了实现组件的样式模块化。我们通常会在style标签中添加一个scoped属性,这样css样式只能作用于当前的Vue组件。使组件之间的样式相互独立,当调用该组件的时候就不会影响其他组件样式或者被其他组件中的样式所干扰。

一、什么是scoped

scoped是Vue中引入的处理样式属性,目的是使样式私有化(模块化),不对全局造成污染。使用该属性会在该为该组件自动添加一个唯一的属性为组件内的CSS 样式定作用域,该属性使用了data-v-hash(hash是随机的哈希值)的方式来对模块进行标识。当我们在组件的style标签中添加scoped属性后,Vue在对该组件进行编译后会组在件里面的dom元素中添加data-v-hash属性。

二、什么是scoped穿透

scoped的确很好用,但是并不是所有组件中的样式都能满足我们的项目需求,有时候我们还是希望根据项目需求适当的修改下组件中的样式。特别是当我们引用第三方组件库时,在不修改原组件样式的基础上对组件样式进行适当的调整。这就需要用到特殊的方式来穿透scoped属性,达到修改拥有scoped属性的组件中样式的目的。

三、>>> 操作符

这是CSS中的一种深度作用选择器,如果你的CSS样式定义了scss/less等预处理器的话可能无法识别(stylus预处理器的样式可以穿透)。比如我引用了element中的el-popover组件,现在想重新定义el-popover组件中的样式。当使用普通的css样式来定义时就可以使用>>> 操作符来深度操作el-popover组件中的样式,如下所示:

四、/deep/ 操作符

上面说了如果使用 >>> 操作符来深度操作子组件样式会失效,那么使用预处理器的时候该怎么办呢?如果你使用的是预处理器可以使用 /deep/ 操作符(/deep/的意思为深入的,深远的,是>>>操作符的别名),它跟 >>> 操作符作用一样可以用来对组件进行深度操作。

五、::v-deep操作符

如果在使用scss预处理器时无法使用 /deep/ 操作符来深度操作DOM元素(Vue cli3.0编译会报错:SassError: expected selector),这时可以考虑使用::v-deep操作符,这也是>>>操作符的别名,同样可以正常工作。

六、扩展CSS中的特殊定位符号

在定义css样式的时候我们经常会用到一些特殊符号来定位DOM元素,方便快速定位到指定的DOM元素。下面是一些常用的特殊符号及说明:

 

总结:在此我们建议如果你使用的css/stylus模式可以使用>>> 操作符,如果使用less模式可以使用 /deep/ 操作符,如果使用sass/scss模式可以使用::v-deep操作符来实现深度作用选择器操作。

原文:http://t.zoukankan.com/guchengnan-p-14362775.html

Vue中的样式穿透,修改element-ui组件样式不生效的更多相关文章

  1. 修改element ui 默认样式最好的解释

    KedAyAyA 17年10月 https://forum.vuejs.org/t/elementui/19171/5 首先添加了scoped的style标签会在vue-loader里进行处理 所谓的 ...

  2. vue加scoped后无法修改样式(无法修改element UI 样式)

    有的时候element提供的默认的样式不能满足项目的需要,就需要我们队标签的样式进行修改,但是发现修改的样式不起作用 第一种方法 原因:scoped 解决方法:去掉scoped 注意:此时该样式会污染 ...

  3. 覆盖element ui 的样式

    我们可以使用 !important  来覆盖element ui 的样式 首先先在浏览器中找到 我们所要修改的样式 ,然后找到她的 class  重新写他的样式 ,例如 . app  { width ...

  4. 黑马vue---17、vue中通过属性绑定绑定style行内样式

    黑马vue---17.vue中通过属性绑定绑定style行内样式 一.总结 一句话总结: 如果属性名中带有短线必须加引号,比如: h1StyleObj: { color: 'red', 'font-s ...

  5. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  6. 基于Vue的Quasar Framework 介绍 这个框架UI组件很全面

    基于Vue的Quasar Framework 介绍 这个框架UI组件很全面 基于Vue的Quasar Framework 中文网http://www.quasarchs.com/ quasarfram ...

  7. element ui组件的开始时间-结束时间验证

    <el-date-picker v-model="seach.before" type="date" placeholder="开始时间&quo ...

  8. vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式

    在vue开发中,需要使用scoped属性避免样式的全局干扰,但是这样在父组件中是无法被修改的,不仅如此如果项目中用了UI框架比如element Ui,这个时候在本组件也无法修改样式,因为权重问题.但是 ...

  9. vue修改Element的el-table样式

    修改Element中的el-table样式,可以使用以下几种方法: 1. row-style 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style. 2. ...

  10. vue覆盖UI组件样式不生效

    检查检查是不是加了scoped 在vue中,我们需要引用子组件,包括ui组件(element.iview). 但是在父组件中添加scoped之后,在父组件中书写子组件的样式是无效果的. 去掉scope ...

随机推荐

  1. 国产电源芯片DP4054 软硬件兼容TP4054 规格书资料

    DP4054 是一款完整的采用恒定电流/恒定电压单 节锂离子电池充电管理芯片.其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054 可以适合USB 电源和适配器电源工作.跟进口 ...

  2. chia NFT 经验

    除了NFT的ID 其他所有内容都可以相同包括NFT数据,meta,许可证 收藏集创建一次后就无法更改了,如果之后的mint中重新设置了收藏集,将无效, 收藏集只认UUID,不认名称.

  3. 读后笔记 -- Python 全栈测试开发 Chapter11:Python + Requests 实现接口测试

    11.1 Requests 框架 11.1.1 requests 请求 1. reqeusts 库 安装 pip install requests 2. requests 库 GET 方法,参数通过 ...

  4. python33

    Python逻辑运算符 Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20: 运算符 逻辑表达式 描述 实例 and x and y 布尔"与" - 如果 x ...

  5. supertv

    Banben:1.3BanbenendGengxinnr:死宅1.2更新内容:[换行]- 增加视频分享[换行]- 支持浏览器打开观看视频GengxinnrendDownurl:http://bmob- ...

  6. 解决504 GATEWAY TIMEOUT Nginx网关超时

    最近遇到一个问题504 GATEWAY TIMEOUT的问题,在浏览器的NetWork里面看是这个效果.时间大概是60s. 修改nginx配置 目前后端技术架构主要是nginx和php-fpm,前端主 ...

  7. WRF rsl.out文件研究

    本文翻译自https://www2.mmm.ucar.edu/wrf/users/FAQ_files/FAQ_wrf_runtime.html Q1 我应该使用几个处理器来运行wrf.exe? A1 ...

  8. reids哨兵机制

    宏观上的哨兵机制 监控:哨兵不断的检查master和slave是否正常的运行. 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序. 自动故障转移:如果一个mas ...

  9. Comparison Theorem in Riemannian geometry

    Given $p\in M$, locally, there exists a diffemorphism of $T_M$ and $B_r(p)\subset$, this is the most ...

  10. 部分jdk网盘链接

    链接:https://pan.baidu.com/s/1Nw84qVRL3Buarh2LY1lWEg 提取码:6q2z 含 6u45 7u80 8u202 11.0.X 的win及linux版 没有网 ...