1. scoped

当多个组件中有相同的元素或相同的类名时,在其中一个组件中更改该元素的样式,会导致所有组件中的样式更改,造成样式污染,若只想该样式在当前组件生效就需要用到scoped

示例

  1. 组件demo与demo2
<template><div><h1>demo</h1></div>
</template>
  1. 在App.vue中导入组件demo与demo2,此时页面为
  2. 在组件demo中更改h1的样式,此时两个组件中的h1标签都变为橙色
<template><div><h1>demo</h1></div>
</template>
<style>
h1{color: orange;
}
</style>

解决办法

若只想要demo中的h1样式改变,需在demo中的style标签中添加scoped属性

<template><div><h1>demo</h1></div>
</template>
<style scoped>
h1{color: orange;
}
</style>

实现原理

  1. 给组件中的每个标签添加一个data-v-xxxx属性
  2. <style scoped>标签中的每个选择器的最后一个选择器添加对应data-v-xxxx属性的属性选择器(指如果选择器是复合的如div h1,则给h1添加属性选择器)

2. scoped样式穿透

使用scoped会导致一个问题,就是若在当前组件引入一个新的组件,更改新的组件中元素的属性是无法生效的

示例

  1. 组件child
<template><div><h2>child</h2></div>
</template>
  1. 在demo中引入组件child并更改child中h2的样式,此时样式是不生效的
<template><div><h1>demo</h1><child class="child"></child></div>
</template>
<script>
import child from "./child.vue";
export default {components: {child,},
};
</script>
<style scoped>
h1{color: orange;
}
.child h2 {color: aqua;
}
</style>

这是由于scoped属性为child第一层元素div添加了data-v-xxxx属性并未给h2添加属性,却在符合选择器中最后一个选择器.child h2h2后添加属性选择器所导致的

解决办法

使用scoped样式穿透,在选择器.child h2.child后添加

  1. >>>
  2. /deep/
  3. ::v-deep
<template><div><h1>demo</h1><child class="child"></child></div>
</template>
<script>
import child from "./child.vue";
export default {components: {child,},
};
</script>
<style scoped>
h1{color: orange;
}
.child >>> h2 {color: aqua;
}
</style>

实现原理

>>>, /deep/, ::v-deep放在谁的后面,属性选择器就加在哪个选择器的后面

Vue中关于scoped以及scoped样式穿透的原理与使用详解相关推荐

  1. Vue中使用使用内联样式

    Vue中使用使用内联样式 Vue中使用内联方式的3中方式 1.直接在元素上通过:style的形式,书写样式对象 2.将样式对象定义到data中,再引用 3.使用数组,引用多个data上的样式对象 Vu ...

  2. vue两个按钮切换_在vue中实现多个按钮样式的点击切换?

    1.在vue中实现多个按钮样式的点击切换?有多个按钮,点击其中一个出现下划线,而另一个回到原始状态. 点击其中一个两个同时出现下划线样式: 再次点击两个都还原成最初的样式,即有下划线: 如何实现只有被 ...

  3. vue ajax拦截器,Vue-resource拦截器判断token失效跳转详解

    本文主要为大家带来一篇Vue-resource拦截器判断token失效跳转的实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 在拦截器中设置全局的 ...

  4. php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解

    本篇文章给大家分享的内容是关于PHP 中 self.static.$this 的区别和后期静态绑定详解,有着一定的参考价值,有需要的朋友可以参考一下 self.static 和 $this 的区别 为 ...

  5. java构造块_java中的静态代码块、构造代码块、构造方法详解

    运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...

  6. (转)web.xml 中的listener、 filter、servlet 加载顺序及其详解

    转: https://www.cnblogs.com/Jeely/p/10762152.html web.xml 中的listener. filter.servlet 加载顺序及其详解 一.概述 1. ...

  7. nmmqq.php?/lspc.html,html中的图片直接使用base64编码后的字符串代替详解

    网页中的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme,下面有个不错的示例,大家可以参考下 最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看 ...

  8. Java中常见RuntimeException与其他异常表及Exception逻辑关系详解

    Java中常见RuntimeException与其他异常表及Exception逻辑关系详解 前言 常见`RuntimeException` 其他错误类型 `Error`类 `Exception`类 E ...

  9. python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

最新文章

  1. JavaScript与DOM编程
  2. 你该认识这样的Linux_shell函数使用案例
  3. 中移动完成透镜天线远距覆盖和降本增效试点
  4. 闭包---在函数内部再定义一个函数
  5. Hadoop集群(第2期)_机器信息分布表
  6. 群里又会python的吗_自从会了Python在群里斗图就没输过,Python批量下载表情包!...
  7. 扩展Jquery方法创建LigerUI Grid
  8. Hadoop基础教程》之初识Hadoop【转】
  9. 虚拟机centOs Linux与Windows之间的文件传输
  10. [Linux] Ubuntu 11.04 安装 Faenza 0.9 图标集
  11. mysql中常用的筛查语句_数据库中常用的一些关键字
  12. 多角度看微积分基本定理
  13. matlab 异常,Matlab 2017b 异常信息。程序奔溃。
  14. 给软件工程师的自学建议
  15. 最好用的 Base64 在线工具
  16. mysql_assoc函数_PHP:MySQL函数mysql_fetch_assoc()的用法
  17. 认真分享几个「副业赚钱」的靠谱思路!
  18. 用python处理html代码的转义与还原 #x27; amp; lt; gt; quot; #x27;等特殊字符
  19. 2022年全球市场硬化疗法总体规模、主要企业、主要地区、产品和应用细分研究报告
  20. 顶级IT企业 Sign-on Bonus 大比拼

热门文章

  1. htc e8 android5.0官方下载,HTC更新Android 5.0/L名单公布 最低支持初代One M7
  2. 语音情感识别(Speech Emotion Recognition)相关资料
  3. 【转载】串行并行工序混合的生产线数学模型
  4. 了解下 IEnumerable、ICollection、IList 和 IQueryable 接口
  5. 小猿圈web之前端的主流框架
  6. 巧用这几款多特瑞产品,感受别样冬日暖
  7. window docker国内镜像设置
  8. css元素的显示与隐藏 display显示隐藏 +visibility显示隐藏 +overflow溢出显示隐藏
  9. 树莓派小车——红外避障模块
  10. 方舟手游服务器12点维护啥时候,明日方舟10月30日14:00服务器停机维护通知_明日方舟10月30日更新了什么_玩游戏网...