在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. pytest 之conftest.py是什么

    conftest.py是pytest框架的固定写法:可以把hook和fixture写在这个文件里,就会自动去调用:conftest.py相当于可以编写自己的插件: 也可以理解为pytest特有的本地测 ...

  2. CentOS8安装pycharm报错【Can't connect to X11 window server using ':0' as the value of the DISPLAY variable. 】

    在CentOS8 安装pycharm报出如下错误,原来是自己画蛇添足的用sudo执行pycharm.sh,没有按照Install说明里边的直接执行 ./pycharm.sh. 原因见这里:https: ...

  3. QMap 删除指针内容时的一个问题

    在测试代码时,发现一个问题: void UserManager::removeUser(const QString &name) { QMap<QString, User*>::I ...

  4. vue页面点击按钮增加和删除标签

    1.在data()里定义一个空数组: conditions:[], 2.给数组一个容器,并且遍历数组 <div v-for="item in conditions">& ...

  5. kali WiFi相关研究(学习中...)

    基础环境准备: 笔记本一台E470c(内置网卡 Qualcomm Atheros QCA9377 802.11ac) # 经过测试创建虚拟AP不成功 外置网卡一个:UGREEN 绿联AC1300M,芯 ...

  6. 自考网络原理:安全套接字层SSL

    对ssl/tls的理解 前:SSL; 后:TLS: 以下是B站上的up主讲的,非常的深入浅出,讲的很好.感谢技术蛋老师. https://www.bilibili.com/video/BV1KY411 ...

  7. 《基于CNN和SVM的人脸识别系统的设计与实现》论文笔记十六

    一.基本信息 标题:基于CNN和SVM的人脸识别系统的设计与实现 时间:2021 来源:计算机与数字工程 关键词: 人脸识别;卷积神经网络;支持向量机;深度学习; 二.研究内容 问题定义: 针对人脸识 ...

  8. <<运算?&=、|=、 ^=、<<=、>>=的意思? 十六进制前缀是 0x。

    <<运算? a<<b 表示把a转为二进制后左移b位(在后面添加 b个0).例如100的二进制表示为1100100,100左移2位后(后面加2个零):1100100<< ...

  9. AES可以加密成

    AES可以生成HEX的字符串如{[m9LJfF4fYtt+PGoAA5WmL+6RFh5oVvrlCQpVhLyk3l28XqS3D4Qd+ehOdvqLcUrFKcyBV3hygXHU3We33bY ...

  10. Python学习笔记文件读写之生成随机的测试试卷文件

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...