vue中scoped详解以及样式穿透>>>、/deep/、::v-deep

1、scoped

  • scoped属性用于限制样式仅应用于当前组件。
  • 当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染。

原理:当样式中加了scoped属性时候,编译的时候会自动给每一个dom节点都添加一个不重复的自定义属性,例如:data-v-4cd6f8b2(在同一个组件中,添加在所有节点上这个属性是一样的)

style标签拥有scoped属性编译后

通过代码可以看到加了scoped之后btnbg后面多了一个属性[data-v-4cd6f8b2]

2、样式穿透

  • 下面三种样式穿透的方法均不是标准css的一部分,而是vue的特殊语法
  • >>>、/deep/与::v-deep在实现效果上来说是一样的。它们都是Vue中用于穿透组件scoped样式隔离的语法,允许组件内的样式影响到子组件或更深层次的DOM元素

(1)>>>(适用于css原生样式)

如果项目使用的是css原生样式而没有用 scss 、sass、less ,那么可以直接使用 >>> 穿透修改

(2)/deep/ 与 ::v-deep 

项目中如果用到了预处理器 scss 、sass、less 操作符 ,那么用>>> 可能会因为无法编译而报错 ,比如在 <style lang="scss" scoped>,可以使用 /deep/或者::v-deep穿透

  • 在Vue 2.x项目中,/deep/和>>>被广泛使用来实现样式的穿透。
  • 在Vue 3.x项目中,推荐使用::v-deep来实现样式的穿透,因为它提供了更好的语义清晰度和兼容性

3、代码演示样式穿透

(1)暂且叫下面的组件为a组件,a组件中有一个testView组件

<template><div class="test_bg"><testView></testView></div>
</template><style lang="scss" scoped>.test_bg{padding: 50px;background-color: #FAB32D;.test_app{background-color: rebeccapurple;width: 100%;height: 200px;.test_app_c{background-color: red;width: 100%;height: 100px;.test_app_c_a{background-color: green;width: 100%;height: 20px;}}}
}
</style>

(2)下面是testView组件,下面我们叫做b组件吧

<template><div class="test_app"><div class="test_app_c"><div class="test_app_c_a"></div></div></div>
</template><script setup>
</script><style lang="scss" scoped>
.test_app {background-color: rebeccapurple;width: 50%;height: 200px;.test_app_c {background-color: red;width: 50%;height: 100px;.test_app_c_a {background-color: green;width: 50%;height: 20px;}}
}
</style>

上面代码style中用了scoped属性,父子组件相互隔离,样式彼此不受影响,运行代码如下图

其中外面黄色部分是a组件中的标签,紫色是b中的标签,按理说两个组件相互隔离,那么紫色部分应该渲染的是b组件里的样式,withd:50%,但是我们发现他其实是渲染a组件中的width:100%,后面子元素的样式才是渲染的b组件的样式,这里要注意,查看编译后的样式就能明白,a组件中添加了data-v-4cd6f8b2属性,b组件中隔离后往元素添加了data-v-5dd7fed2属性,test_app这个div同时添加了a和b组件的属性,样式被a组件的样式覆盖了

重点来了,这个时候如果我们想要样式穿透,在a组件中修改b组件中子元素的样式,那我们可以用/deep/ 或者 ::v-deep 来去掉每个元素中添加的属性,修改a组件中的样式代码后如下

.test_bg{padding: 50px;background-color: #FAB32D;::v-deep .test_app{background-color: rebeccapurple;width: 100%;height: 200px;.test_app_c{background-color: red;width: 100%;height: 100px;.test_app_c_a{background-color: green;width: 100%;height: 20px;}}}
}

我们只是在.test_app前面加上了::v-deep,这个时候test_app后面所有的子元素就穿透了scoped的约束,实际上加上了::v-deep就是去掉约束data-v-4cd6f8b2以及data-v-5dd7fed2

下面对比看一下没加::v-deep与加上的区别

没加

加上后

从图可以看出,添加了::v-deep后test_app_c_a后面就去掉了[data-v-5dd7fed2],代码运行结果如下

大家可以通过代码以及运行效果图来对比,然后完全掌握约束的原理以及样式穿透的原理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库解析一维和二维简易JSON,

项目还在使用Oracle11&#xff0c;不支持后续官方的json解析方式&#xff0c; 在 前年、去年、今年 接连 遇到json解析问题后&#xff08;其实是公司的轮子效率太慢&#xff0c;太复杂&#xff0c;决定自己造个轮子&#xff0c;看看到底为什么慢&#xff0c;是不是真的很复杂&a…

【最新】cudnn安装教程

最近换了新电脑需要重新安装cuda和cudnn&#xff0c;发现现在cudnn的安装比以前方便多了&#xff0c;直接在官网下载exe安装包一键运行即可。安装的时候注意cuda和cudnn的对应关系即可&#xff1a;【最新】cuda和cudnn和显卡驱动的对应关系-CSDN博客 访问cudnn下载链接cuDNN 9…

Git 基础 GitHub【学习笔记】

一、Git 优势 大部分操作在本地完成&#xff0c;不需要联网完整性保证尽可能添加数据而不是删除或修改数据分支操作非常快捷流畅与 Linux 命令全面兼容 二、Git 程序安装 https://git-scm.com 三、Git 结构 #mermaid-svg-9Go6R1leWXWrDCqn {font-family:"trebuchet ms&quo…

运维锅总详解NFS

NFS是什么&#xff1f;如何对NFS进行部署及优化&#xff1f;NFS工作流程是什么&#xff1f;NFS的性能及优缺点是什么&#xff1f;NFS发展历史又是怎样的&#xff1f;希望本文能帮您解答这些疑惑&#xff01; 一、NFS简介 NFS (Network File System) 是由 Sun Microsystems 在…

论文精读(保姆级解析)—— Flash Diffusion

0 前言 今天分析的论文是《Flash Diffusion: Accelerating Any Conditional Diffusion Model for Few Steps Image Generation》。该论文发表在2024年&#xff0c;目前已开源在arxiv上&#xff0c;主要提出了一种高效、快速且多功能的蒸馏方法&#xff0c;用于加速预训练扩散模…

[C++][STL源码剖析] 详解AVL树的实现

目录 1.概念 2.实现 2.1 初始化 2.2 插入 2.2.1 旋转&#xff08;重点&#xff09; 左单旋 右单旋 双旋 2.❗ 双旋后&#xff0c;对平衡因子的处理 2.3 判断测试 完整代码&#xff1a; 拓展&#xff1a;删除 1.概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但…

遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松解决....

websocket 是一种双向通信协议&#xff0c;在建立连接后&#xff0c;websocket服务端和客户端都能主动向对方发送或者接收数据&#xff0c;而在http协议中&#xff0c;一个request只能有一个response&#xff0c;而且这个response也是被动的&#xff0c;不能主动发起。 websoc…

【研路导航】保研英语面试高分攻略,助你一路过关斩将

面试攻略之 千锤百炼英语口语 写在前面 在保研面试中&#xff0c;英语口语往往是让许多同学感到头疼的一部分。如何在面试中展现出自信和流利的英语表达能力&#xff0c;是我们今天要探讨的主题。以下是一些有效的英语口语练习方法和常见题型解析&#xff0c;帮助你在保研面试…

LoRA:低秩自适应

LoRA:低秩自适应 本章节是对轻松上手微调大语言模型——QLORA篇中提到的LoRA的原理解释。 背后动机 现今模型的参数量变得越来越大&#xff0c;对预训练模型进行全微调变得越来越不可行。为了解决这个问题有了LoRA&#xff08;Low-Rank Adaption&#xff09;的诞生。将可训练…

Nginx制作下载站点

使用nginx制作一个类似nginx官网的下载站点 如何制作一个下载站点,首先需要ngx_http_autoindex_module模块 该模块处理以斜杠(“/”)结尾的请求&#xff0c;并生成目录列表。 nginx编译的时候会自动加载该模块&#xff0c;但是该模块默认是关闭的&#xff0c;需要使用下来指令…

3 FreeRTOS移植(从FREERTOS官网移植进自己的工程)

3 FreeRTOS移植 1 获取FreeRTOS源码&#xff08;熟悉&#xff09;1.1 介绍源码内容1.2 FreeRTOS内核1.2.1 Demo文件夹1.2.2 Source文件夹1.2.2.1 portable文件夹 2 FreeRTOS手把手移植&#xff08;掌握&#xff09;&#xff08;重要&#xff09;2.1 移植步骤 3 系统配置文件说明…

GraphHopper-map-navi_路径规划、导航(web前端页面版)

文章目录 一、项目地址二、踩坑环境三、问题记录3.1、graphhopper中地图问题3.1.1. getOpacity不存在的问题3.1.2. dispatchEvent不存在的问题3.1.3. vectorLayer.set(background-maplibre-layer, true)不存在set方法3.1.4. maplibre-gl.js.map不存在的问题3.1.5. Uncaught Ref…

学习记录:ESP32控制舵机 FREERTOS BLE

控制舵机 PWM信号 PWM信号是一种周期性变化的方波信号&#xff0c;它有两个关键参数&#xff1a; 周期&#xff08;Period&#xff09;&#xff1a;一个完整的PWM信号的时间长度&#xff0c;通常用秒&#xff08;s&#xff09;或毫秒&#xff08;ms&#xff09;表示。占空比…

FFmpeg解复用器如何从封装格式中解析出不同的音视频数据

目录 1、ffmpeg介绍 2、FFMPEG的目录结构 3、FFmpeg的格式封装与分离 3.1、数据结构 3.2、封装和分离(muxer和demuxer) 3.2.1、Demuxer流程 3.2.2、Muxer流程 4、总结 4.1、播放器 4.2、转码器 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续…

微服务上(黑马)

文章目录 微服务011 认识微服务1.1 单体架构1.2 微服务1.3 SpringCloud 2 微服务拆分2.1 熟悉黑马商城2.2 服务拆分原则2.2.1.什么时候拆2.2.2.怎么拆 2.3 拆分服务2.3.1 拆分商品管理功能模块2.3.2 拆分购物车功能模块 2.4 远程调用2.4.1 RestTemplate2.4.2.远程调用 2.5 总结…

顺序表算法题

在学习了顺序表专题后&#xff0c;了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了&#xff0c;在本篇中将对三道顺序表相关的算法题进行讲解&#xff0c;希望能对你有所帮助&#xff0c;一起加油吧&#xff01;&#xff01;&#xff01; 1.移除元素 2…

nginx转发netty长链接(nginx负载tcp长链接配置)

首先要清楚一点&#xff0c;netty是长链接是tcp连接不同于http中负载在http中配置server监听。长连接需要开启nginx的stream模块(和http是并列关系) 安装nginx时注意开启stream&#xff0c;编译时加上参数 --with-stream &#xff08;其他参数根据自己所需来加&#xff09; …

脊髓损伤的小伙伴锻炼贴士

Hey小伙伴们~&#x1f44b; 今天要跟大家聊一个超燃又超温馨的话题&#xff01;&#x1f31f; 对于我们脊髓损伤的小伙伴们来说&#xff0c;保持身体活力&#xff0c;不仅是健康的小秘诀&#xff0c;更是拥抱美好生活的超能量哦&#xff01;&#x1f4aa; #脊髓损伤# 首先&…

Cache 替换策略--PLRU算法详解

一、引言 LRU&#xff08;Least Recently Used&#xff09;是 cache 的经典替换策略之一&#xff0c;但当 Cache 的路数比较大时&#xff08;多路组相连结构&#xff09;&#xff0c;实现 LRU 的硬件开销就会变得很大。现代处理器一般会考虑使用 PLRU&#xff08;pseudo-LRU&a…