Vue 中动态与静态处理 Element UI/Element Plus 组件禁用状态样式

目录

  • 一、静态样式修改 - 使用 `::v-deep` 穿透组件样式
  • 二、选择器的优先级和匹配顺序
  • 三、动态添加样式 - 使用 Vue 实例属性(非推荐)
  • 四、区别总结
  • 五、应用场景总结

本文主要探讨在 Vue.js 项目中,特别是搭配 Element UI 或 Element Plus 组件库时,如何灵活处理 el-inputel-select 组件禁用状态下的字体颜色问题。我们将详细分析如何使用 CSS 选择器穿透(如 ::v-deep)来改变禁用状态下的输入框字体颜色,并探讨通过 JavaScript 动态添加样式的可能性及其局限性。

一、静态样式修改 - 使用 ::v-deep 穿透组件样式

在 Element UI 或 Element Plus 中,当我们给 el-inputel-select 添加 :disabled="true" 属性时,其字体颜色会变为暗色以表示禁用状态。

在这里插入图片描述

若要将禁用状态下的字体颜色更改为红色,可以通过 CSS 选择器穿透来实现:

/* Vue 2.x + Element UI */
.el-input.is-disabled /deep/ .el-input__inner,
.el-select.is-disabled /deep/ .el-input__inner {color: red !important;
}/* Vue 3.x + Element Plus */
.el-input.is-disabled ::v-deep .el-input__inner,
.el-select.is-disabled ::v-deep .el-input__inner {color: red !important;
}

在这里插入图片描述

但这里,::v-deep/deep/(Vue 2.x)选择器可以帮助我们穿透组件的作用域,修改内部 el-input__inner 元素的颜色。这只有 el-input 内部包裹的 el-input,其禁用状态的字体颜色能成功更改为红色,而 el-select 不行 。需要将::v-deep/deep/提前。

/* Vue 2.x + Element UI *//deep/ .el-input.is-disabled.el-input__inner,
.el-select.is-disabled /deep/ .el-input__inner {color: red !important;
}/* Vue 3.x + Element Plus */
::v-deep .el-input.is-disabled  .el-input__inner,
.el-select.is-disabled ::v-deep .el-input__inner {color: red !important;
}

在这里插入图片描述

二、选择器的优先级和匹配顺序

在 Vue SFC 的 scoped CSS 中,.el-input.is-disabled ::v-deep .el-input__inner::v-deep .el-input.is-disabled .el-input__inner 在意图上都是为了穿透组件样式作用域来修改内部元素 .el-input__inner 的样式,尤其是当 .el-input 处于禁用状态(.is-disabled 类名存在)时。

区别在于选择器的优先级和匹配顺序:

  1. .el-input.is-disabled ::v-deep .el-input__inner
    这种写法先指定了 .el-input.is-disabled 这个类选择器,然后才使用 ::v-deep 进行穿透。这意味着它首先会找到所有带有 .el-input.is-disabled 类的元素,然后再尝试穿透这些元素去影响内部 .el-input__inner 的样式。

  2. ::v-deep .el-input.is-disabled .el-input__inner
    这种写法先使用 ::v-deep 进行穿透,然后指定了类选择器 .el-input.is-disabled .el-input__inner。尽管两者最终都旨在达到相同的目的,但逻辑上这种写法似乎是试图穿透任意层次以查找满足 .el-input.is-disabled .el-input__inner 这一组合条件的所有元素。

三、动态添加样式 - 使用 Vue 实例属性(非推荐)

尽管 Vue 提供了多种方式动态添加样式,但直接通过 JavaScript 修改类似 ::v-deep 规则的样式并不推荐,尤其对于穿透子组件样式的情况。不过,这里仍提供一种使用 Vue 实例 $style 属性(仅限 Vue 2.x)的示例,以说明其工作原理:

// 在 Vue 组件中
export default {data() {return {dynamicStyle: {}};},created() {this.updateDynamicStyle();},methods: {updateDynamicStyle() {// 创建模拟 CSS 样式对象(但这并不能应用于穿透子组件)const styleObject = {'.el-input.is-disabled .el-input__inner': {color: 'red !important' // 注意这里没有使用 ::v-deep,因为 $style 不支持穿透}};// 合并到组件的 $style 属性this.dynamicStyle = Object.assign({}, this.dynamicStyle, styleObject);}}
};

然后在模板中引用:

<div :style="dynamicStyle"><!-- el-input 和 el-select 等组件 -->
</div>

四、区别总结

  • ::v-deep/deep/ 选择器是在 CSS 中穿透组件作用域修改子组件样式的一种手段,特别适用于 Element UI 和 Element Plus 组件库。
  • 动态添加样式(如通过 $style)适用于在运行时调整组件实例自身的样式,但不适用于穿透到子组件的样式。

五、应用场景总结

在实际项目开发中,推荐采用 ::v-deep 穿透组件样式的方式来定制 Element UI/Element Plus 组件的禁用状态样式,这种方式更为直观、稳定且易于维护。对于动态添加样式的需求,优先考虑使用 Vue 的响应式数据绑定至 :style 特性来调整组件本身的样式,而非穿透到子组件。在 Vue 3.x 中,官方已不再推荐使用 $style,改用 <style> 标签结合 scoped 或 CSS 变量等方式进行样式管理。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

NVME协议第四章-Data Structures

本章描述NVME所需的数据结构&#xff08;讨论均基于PCIE over NVME&#xff09;。 一、Submission Queue & Completion Queue Definition host提交cmd到SQ&#xff0c;填入SQ后&#xff0c;Tail指针需要1&#xff0c;如果tail指针超过队列queue size&#xff0c;那么tai…

Springboot+Vue项目-基于Java+MySQL的车辆管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

TVM简介

TVM FGPA,CPU, GPU 1.什么是TVM&#xff1f; 是一个支持GPU&#xff0c;CPU&#xff0c;FPGA指令生成的开源编译器框架 2.特点 基于图和算符结构来优化指令生成&#xff0c;最大化硬件执行效率。其中使用了很多方法 来改善硬件执行速度&#xff0c;包括算符融合、数据规划…

LeetCode96:不同的二叉搜索树

题目描述 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 代码 /*dp[i]&#xff1a;表示i个节点有dp[i]个不同的二搜索叉树递推公式&#xff1a;dp[i] dp[j-1] * dp[i-j], j…

【C语言—猜数字小游戏】

一、游戏规则 电脑自动生成一个1~100范围内的随机数&#xff0c;由玩家猜测本轮生成的随机数是什么&#xff0c;系统根据玩家猜测数据的⼤⼩给出猜⼤了或猜⼩了的反馈&#xff0c;直到玩家猜对&#xff0c;游戏结束。 如何生成随机数&#xff1a;【C语言】/*如何生成随机值*/-C…

嵌入式学习70-复习(wireshark使用和http协议)

--------------------------------------------------------------------------------------------------------------------------------- wireshark 1.sudo wireshark 2.选择 any &#xff0c; 3.搜索 http/tcp 54 为 发送的数据包 58 回复的数据包 请求报文 请求报文…

【QA】Java集合常用的函数

文章目录 前言Collection接口通用函数 | Collections工具类通用函数 | List接口 Set接口List接口ArrayListLinkedList Set接口TreeSetHashSetLinkedHashSet Map接口通用函数TreeMapHashMapLinkedHashMap 前言 本文介绍Java集合中常用的函数。 Collection接口 通用函数 | Co…

cmake调用MSVC编译时报C2071、C2061、C2059、C2449等错误的解决方案

文章目录 1. 问题复述2. 问题原因3. 解决方案 1. 问题复述 项目一直在linux下编译&#xff0c;这次偶然要在windows下使用msvc编译&#xff0c;结果一堆报错&#xff0c;根据报错信息发现语法也没有问题&#xff0c;报错信息如下&#xff1a; 查找文献说是因为有中文注释导致…

Springboot集成Eureka实现注册中心-11

Spring Cloud Netflix Eureka是Spring Cloud Netflix子项目的核心组件之一&#xff0c;主要用于微服务架构中的服务治理。 什么是注册中心 在微服务架构中往往会有一个注册中心&#xff0c;每个微服务都会向注册中心去注册自己的地址及端口信息&#xff0c;注册中心维护着服务…

我觉得POC应该贴近实际

今天我看到一位老师给我一份测试数据。 这是三个国产数据库。算是分布式的。其中有两个和我比较熟悉&#xff0c;但是这个数据看上去并不好。看上去第一个黄色的数据库数据是这里最好的了。但是即使如此&#xff0c;我相信大部分做数据库的人都知道。MySQL和PostgreSQL平时拿出…

栈和队列初级题目(包含四个题)

目录 一、原题链接&#xff1a; 二、有效的括号&#xff1a; ​编辑代码实现&#xff1a; 三、用队列实现栈&#xff1a; 四、用栈实现队列&#xff1a; 五、设计循环队列&#xff1a; 六、读书分享&#xff1a; 一、原题链接&#xff1a; 20. 有效的括号 225. 用队列实…

机器学习-12-sklearn案例03-flask对外提供服务

整体思路 训练一个模型&#xff0c;把模型保存 写一个基于flask的web服务&#xff0c;在web运行时加载模型&#xff0c;并在对应的接口调用模型进行预测并返回 使用curl进行测试&#xff0c;测试通过 再创建一个html页面&#xff0c;接受参数输入&#xff0c;并返回。 目录结…

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析 由北京海特伟业科技任洪卓发布于2024年5月10日 西湖大学&#xff0c;这所矗立于时代前沿的高等学府&#xff0c;始终秉持着创新精神和追求卓越的坚定信念&#xff0c;不断致力于教学质量的提升与学术研究的深化。其…

Sql Server 2016数据库定时备份

一、 配置备份计划任务 选中“维护计划“--右键--“维护计划向导” 完成

详解Python测试框架Pytest的参数化

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不…

一次完整的GC流程

Java堆中内存区分 Java的堆由新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;组成。新生代存放新分配的对象&#xff0c;老年代存放长期存在的对象。 新生代&#xff08;Young&#xff09;由年轻区&#xff08;Eden&a…

语义分割——脑肿瘤图像分割数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

2024年首季:AGV项目大盘点,有过1亿的项目

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 2024年第一季度&#xff0c;中国智慧物流行业迎来了一个重要的里程碑。 根据新战略移动机器人产业研究所的初步统计…

Numpy求最大、最小值、求累乘、累和

Numpy求最大、最小值 代码举例&#xff1a; ​ 输出结果为&#xff1a; ​ 在这个例子中&#xff0c;我们首先导入了NumPy库&#xff0c;然后创建了一个3x3的矩阵A。接着&#xff0c;我们使用np.max()函数来求矩阵A的最大值&#xff0c;并将结果存储在变量max_value中&#xff…

MyBatis——MyBatis入门程序

一、数据准备 二、开发步骤 1、引入依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.15</version></dependency><dependency><groupId>c…