当前位置: 首页 > news >正文

vue中css作用域及深度作用选择器的用法

Vue中有作用域的CSS

当< style>标签有scoped属性时,它的css只作用于当前组建中的元素。vue2和vue3均有此用法;

当使用scoped后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受父组件有作用域的css和子组件有作用域的css影响。

<style scoped>
.example {color: red;
}
</style>
<template><div class="example">hi</div>
</template>

vue2和vue3均支持混合使用局部与全局样式

<style>
/*全局样式*/
.container-main{background:'#fff';
}
</style>
<style scoped>
/* 当前组件/页面样式 */
.example {color: red;
}
</style>

vue2深度作用选择器

css作用域官网参考
如果希望scoped样式能够作用得更深,能直接影响子组件,可以使用>>>操作符

<style scoped>
.a >>> .b { /* ... */ }
</style>

像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 操作符取而代之——这是一个 >>> 的别名,同样可以正常工作。

<style scoped>
.a >>> .b { /* ... */ }
</style>

在这里插入图片描述

注意:通过v-html创建DOM内容不受作用域内样式的影响;但是仍然可以通过深度作用选择器来为他们设置样式;

vue3深度作用选择器

CSS功能官网参考
在vue3中,如果希望scoped样式中的一个选择器能够作用的更深,例如影响子组件,可以使用:deep()这个伪类;

<template>
<div class="index-main">
<el-row><el-button type="success">按钮</el-button><el-button type="primary">按钮</el-button>
</el-row>
<el-row class="btn-bar" style="padding-top: 20px;"><el-button type="success" size="small">按钮</el-button><el-button type="primary" size="small">按钮</el-button>
</el-row>
</div>
</template>
<style scoped>
/*.btn-bar 中的button都被加上了边框*/
.btn-bar :deep(.el-button){border: 2px solid #f00;
}
/*
.btn-bar:deep(.el-button){border: 2px solid #f00;
}
.btn-bar:deep() .el-button{color: #f00;
}
*/
</style>

以上三种写法均可解析为下面的结果

/*解析结果*/
.btn-bar[data-v-b4e148ca] .el-button {border: 2px solid #f00;
}

使用scss预处理器语言时,在类btn-bar中的所有标签均做深度样式调整时的写法:

<template>
<div class="index-main">
<el-row style="padding-top: 20px;" class="btn-bar"><el-button type="success" size="small">按钮</el-button><el-button type="primary" size="small">按钮</el-button><el-link type="primary">主要链接</el-link>
</el-row>
</div>
</template>
<style lang="scss" scoped>
.btn-bar:deep(){.el-button{border: 2px solid #f00;}.el-link{margin-left: 20px;}
}
</style>

解析结果如下:

.btn-bar[data-v-b4e148ca] .el-button {border: 2px solid #f00;
}
.btn-bar[data-v-b4e148ca] .el-link {margin-left: 20px;
}

在这里插入图片描述

vue3插槽选择器

默认情况下,作用域样式不会影响到 < slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 :slotted 伪类以明确地将插槽内容作为选择器的目标:

<style scoped>
:slotted(div) {color: red;
}
</style>

vue3全局选择器

如果想让其中一个样式规则应用到全局,比起另外创建一个 < style>,可以使用 :global 伪类来实现 (看下面的代码):

<style scoped>
:global(.red) {color: red;
}
</style>

在这里插入图片描述

CSS Modules

CSS Modules是一个用于模块化和组合 CSS 的流行系统。vue-loader 提供了与 CSS 模块的一流集成,可以作为模拟 CSS 作用域的替代方案。

css Modules的使用方法

//使用方式,在style上添加module属性
<style module>.red {color: red;}.bold {font-weight: bold;}
</style>

这将为 css-loader 打开 CSS Modules 模式,生成的 CSS 对象将为组件注入一个名叫 $style 的计算属性,你可以在你的模块中使用动态 class 绑定:

<template><p :class="$style.red">This should be red</p>
</template>

由于它是一个计算属性,它也适用于 :class 的 object/array 语法:

<template><div><p :class="{ [$style.red]: isRed }">Am I red?</p><p :class="[$style.red, $style.bold]">Red and bold</p></div>
</template>

JavaScript 中的访问(选项式API)

<script>
export default {created () {console.log(this.$style.red)}
}
</script>

自定义注入名称

<template>
<div style="background: #000; padding: 15px;"><p :class="$style.yellow">黄色</p><p :class="classA.red">红色</p><p :class="classB.blue">蓝色</p>
</div>
</template><script>export default {data(){return{count: 1}},mounted(){console.log('mounted',this.$style);console.log('mounted',this.classA);}}
</script><style module="classA">.red{color: #f00;font-weight: 700;}
</style>
<style module="classB">.blue{color: blue;font-weight: 700;}
</style>

组合式API中的使用

<script setup>
import { useCssModule } from 'vue';console.log('moudle',useCssModule());
console.log('moudle classA',useCssModule('classA'));
</script>

相关文章:

vue中css作用域及深度作用选择器的用法

Vue中有作用域的CSS 当< style>标签有scoped属性时&#xff0c;它的css只作用于当前组建中的元素。vue2和vue3均有此用法&#xff1b; 当使用scoped后&#xff0c;父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受父组件有作用域的css和子组件有作用…...

LLM - 使用 ModelScope SWIFT 测试 Qwen2-VL 的 LoRA 指令微调 教程(2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142827217 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 SWIFT …...

2024 年热门前端框架对比及选择指南

在前端开发的世界里&#xff0c;框架的选择对于项目的成功至关重要。不同的框架有着不同的设计理念、生态系统和适用场景&#xff0c;因此&#xff0c;开发者在选框架时需要权衡多个因素。本文将对当前最流行的前端框架——React、Vue、Angular、Svelte 和 Solid——进行详细对…...

map_server

地图格式 此软件包中的工具处理的地图以两个文件的形式存储。YAML 文件描述地图的元数据&#xff0c;并命名图像文件。图像文件编码了占用数据。 图像格式 图像文件描述世界中每个单元格的占用状态&#xff0c;并使用相应像素的颜色表示。在标准配置中&#xff0c;较白的像素…...

无人机航拍视频帧处理与图像拼接算法

无人机航拍视频帧处理与图像拼接算法 1. 视频帧截取与缩放 在图像预处理阶段,算法首先逐帧地从视频中提取出各个帧。 对于每一帧图像,算法会执行缩放操作,以确保所有帧都具有一致的尺寸,便于后续处理。 2. 图像配准 在图像配准阶段,算法采用SIFT(尺度不变特征变换)算…...

搬砖11、Python 文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…...

24.6 监控系统在采集侧对接运维平台

本节重点介绍 : 监控系统在采集侧对接运维平台 服务树充当监控系统的上游数据提供者在运维平台上 可以配置采集任务 exporter改造成探针型将给exporter传参和修改prometheus scrape配置等操作页面化 监控系统在采集侧对接运维平台 服务树充当监控系统的上游数据提供者在运…...

refresh-1

如果设置了刷新标志&#xff08;refreshFlag&#xff09;&#xff1a; - 如果CAT&#xff08;配置文件管理代理&#xff09;未初始化&#xff0c;eUICC应返回一个错误代码commandError。 - 对于MEP-A2&#xff0c;eUICC可以返回一个错误代码commandError。 - 如果目标端口上正…...

如何写好一篇计算机应用的论文?

计算机应用是一个广泛的领域&#xff0c;涵盖了从软件开发到数据分析、人工智能、网络安全等多个方向。选择一个合适的毕业设计题目&#xff0c;不仅要考虑个人兴趣和专业技能&#xff0c;还要考虑项目的可行性、创新性以及对未来职业发展的帮助。以下是一些建议&#xff0c;帮…...

工业 5.0 时代的数字孪生:迈向高效和可持续的智能工厂

数字孪生&#xff08;物理机器或流程的虚拟代表&#xff09;正在彻底改变工业物联网和流程监控。这项新兴技术可实现实时模拟&#xff0c;提高效率、可持续性并降低成本。航空航天和汽车等行业已经从这些创新系统中获益匪浅 数字孪生是数字模拟器的演变&#xff0c;因此&#x…...

Python脚本之获取Splunk数据发送到第三方UDP端口

原文地址&#xff1a;https://www.program-park.top/2024/10/12/python_21/ 在 Linux 环境执行脚本&#xff0c;Python需要引入对应依赖&#xff1a; pip install splunk-sdk离线环境下&#xff0c;可手动执行python进入 Python 解释器的交互式界面&#xff0c;输入以下命令&a…...

Protobuf:复杂类型接口

Protobuf&#xff1a;复杂类型接口 package字段规则复杂类型enumAnyoneofmap 本博客基于proto3语法&#xff0c;讲解protobuf中的复杂类型。 package 在.proto文件中&#xff0c;支持导入其它.proto文件的内容&#xff0c;例如&#xff1a; test.proto&#xff1a; syntax …...

Git Push 深度解析:命令的区别与实践

目录 命令一&#xff1a;git push origin <branch-name>命令二&#xff1a;git push Factory_sound_detection_tool test工作流程&#xff1a;两者的主要区别实践中的应用总结 Git 是一种分布式版本控制系统&#xff0c;它允许用户对代码进行版本管理。在 Git 中&#xf…...

大数据开发基础实训室设备

大数据实验实训一体机 大数据实验教学一体机是一种专为大数据教育设计的软硬件融合产品&#xff0c;其基于华为机架服务器进行了调优设计&#xff0c;从而提供了卓越的性能和稳定性。这一产品将企业级虚拟化管理系统与实验实训教学信息化平台内置于一体&#xff0c;通过软硬件…...

【数据结构】string(C++模拟实现)

string构造 string::string(const char* str):_size(strlen(str)) {_str new char[_size 1];_capacity _size;strcpy(_str, str); }// s2(s1) string::string(const string& s) {_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._cap…...

【笔记】I/O总结王道强化视频笔记

文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方…...

XML XSLT:转换与呈现数据的力量

XML XSLT:转换与呈现数据的力量 XML(可扩展标记语言)和XSLT(XML样式表转换语言)是现代信息技术中不可或缺的工具,它们在数据交换、存储和呈现方面发挥着重要作用。本文将深入探讨XML和XSLT的概念、应用及其在信息技术领域的重要性。 XML:数据交换的标准 XML是一种用于…...

ES6总结

1.let和const以及与var区别 1.1 作用域 var&#xff1a; 变量提升&#xff08;Hoisting&#xff09;&#xff1a;var 声明的变量会被提升到其作用域的顶部&#xff0c;但赋值不会提升。这意味着你可以在声明之前引用该变量&#xff08;但会得到 undefined&#xff09;。 con…...

晶体匹配测试介绍

一、晶体参数介绍 晶体的电气规格相对比较简单,如下: 我们逐一看看每个参数, FL就是晶体的振动频率,这个晶体是24.576MHz的。 CL就是负载电容,决定了晶体频率是否准确,包括外接的实际电容、芯片的等效电容以及PCB走线的寄生电容等,核心参数。 Frequency Tolerance是…...

超声波清洗机靠谱吗?适合学生党入手的四款眼镜清洗机品牌推荐!

有没有学生党还不知道双十一买什么&#xff1f;其实可以去看看超声波清洗机&#xff0c;说实话它的实用性真的很高&#xff0c;对于日常用于清洗眼镜真的非常合适&#xff0c;不仅可以帮助大家节约时间而且还能把眼镜清洗的干净透亮&#xff0c;接下来我就来为大家带来四款好用…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...