抛弃!important 使css优先级变大

CSS 权重特性详解:!important 及其他规则 本文深入介绍了 CSS 中!important 的特性。它能给一个属性提高权重,但无法提升继承的权重,也不影响就近原则。最后进行了权重计算总结,为理解 CSS 样式优先级提供了全面的指导。 阅读详情

在开发中很容易使用!important去增大优先级,这是不好的方法,那有没有更优雅的方式来实现我们覆盖的诉求呢?

实例

假设你正在开发一个网站,该网站有一个新闻订阅表单。它包含一个复选框,但复选框的位置有点偏。你需要修正这个问题,但注册表单是一个嵌入到页面上的第三方组件,你无法直接修改它的 CSS。
你通过浏览器检查了复选框,确定只要改变它的 top 位置即可。当前的位置是通过选择器.newsletter .newsletter__checkbox .checkbox__icon设置的,它的权重为(0,3,0)
在这里插入图片描述

一开始你可能会使用相同的选择器来修改 top 值:

/* 覆盖新闻通讯复选框的顶部位置 */
.newsletter .newsletter__checkbox .checkbox__icon {
  top: 5px;
}

当 CSS 的顺序是固定的,并且你可以保证你的 CSS 规则一定在他们的后面的情况下,这足够了。因为『后来居上』:即如果有多个相同的 CSS 选择器选择了同一个DOM元素,那么最后出现的将“获胜”。
然而,大多数时候你无法保证代码顺序。此时你需要增加选择器的优先级。你可以在 DOM 中寻找一些额外的类名,一般从父元素中添加:

/* 更多的类名!权重现在是(0,4,0) */
.parent-thing .newsletter .newsletter__checkbox .checkbox__icon {
  top: 5px;
}

或者你发现这个元素恰好是一个 ,可以将其加入选择器提高优先级:

/* 权重现在是 (0,3,1) */
.newsletter .newsletter__checkbox span.checkbox__icon {
  top: 5px;
}

但所有这些方法都有副作用,都会使你的代码变得脆弱。如果 .parent-thing 突然不见了呢,比如你升级了某个外部依赖;或者如果 .checkbox__icon 从 span 改成了不同的元素怎么办?突然间,你的高优先级选择器什么也选不到了!

当浏览器计算 CSS 选择器优先级时,它们本质上是在计算你组合了多少 ID、类、元素或等效选择器。实际上可以多次重复同一个选择器,每次重复都会增加权重
CSS 选择器 Level 4 规范 写到:CSS 选择器允许多次出现相同的简单选择器,而且可以增加权重。因此,你可以通过重复(三次、四次……)相同的选择器提高权重:

/* 双重 .checkbox__icon!权重现在是 (0,4,0) */
.newsletter .newsletter__checkbox .checkbox__icon.checkbox__icon {
  top: 5px;
}

PS: .checkbox__icon.checkbox__icon 中没有空格!它是一个选择器,因为你针对的是具有那个类的单个元素。
该技巧其实在 MDN !important 章节 有示例(重复了3次#myElement):

#myElement#myElement#myElement .myClass.myClass p:hover {
 color: blue;
}
p {
 color: red !important;
}

在 HTML 中重复无效

PS:这个技巧只在 CSS 中有效!在 HTML 中重复相同的类名对优先级没有任何影响。

<div class="badger badger badger"> 
     Mushroom!
</div>
<style> 
 /* 权重仍然是 (0,1,0) 而非 (0,3,0)*/ 
 .badger {  
    /* ... */  
  }
</style>
CSS中的!important是什么?理解CSS中的!important的作用和用法 在CSS中,样式表的规则根据优先级来确定应用于元素的样式。通常情况下,样式表中的规则按照特定的优先级顺序应用,其中包括选择器的特殊性和规则的位置等因素。important是用来为特定的CSS属性赋予更高的优先级的关键字。important提供了一种强制应用样式的方法,但在实际开发中,应该谨慎使用它,避免滥用。important提供了一种强制应用样式的方法,但在实际开发中,应该谨慎使用它。important的作用和用法,并提供相应的源代码示例。在上述示例中,我们将一个段落的文字颜色设置为蓝色,并使用! 阅读详情

相关推荐

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

本文提供了Ubuntu20.04系统上安装MATLAB R2023b的完整指南,包括系统要求检查、依赖项安装、详细安装步骤及常见问题解决方案。特别针对GTK模块加载失败、OpenGL图形加速问题和中文显示乱码等常见问题提供了有效解决方法,帮助用户顺利完成安装并优化使用体验。

weixin_42619061的博客 487

CSS 重新认识 !important 肯定有你不知道的

如果将!important添加到CSS变量声明中, 只有赋值时!important才起作用. 也就是将pink复制给变量时起了作用, 因为如果没有!important的值应该是skyblue赋值之后!important就从自定义属性上「脱落」了, 使用var()函数时并不会传递!important.box8 {从下图就可以看出,.box8的背景色是red, 因为关于背景色的两条CSS声明都是一般声明.

broken_promise的博客 1万+

S32K144之芯片锁死解锁——进入HardFault

S32K144之芯片锁死解锁——进入HardFault 最近遇到因为软件代码问题导致进入HardFault,从而使芯片锁死,来简述具体现象以及最终的解锁方法。 导致原因:如下图,在进行Gpio的相关配置,case后面没有break语句,导致芯片进入HardFault。 现象1:reset引脚持续为低,reset指示灯常亮。如果掉电后重新上电,通过示波器抓取reset引脚的波形,会有510us左右或者29ms左右的低电平脉冲出现,一般会出现两三次左右并且没有规矩,持续几秒的高电平之后,reset脚再次被拉低

weixin_41935674的博客 8276

【css】css优先级之 !important

react antd 覆盖组件库原有样式,利用 !important 实现。

坚强的泡沫的博客 2934

DDS(Direct Digital Synthesizer)数字频率合成器

随着数字技术在仪器仪表和通信系统中的广泛使用,可从参考频率源产生多个频率的数 字控制方法诞生了,即直接数字频率合成(DDS)。 直接数字合成(DDS)是一种产生模拟波形(通常是正弦波)的方法,它通过产生数字形式的时变信号,然后进行数模转换。由于DDS设备内的操作主要是数字的,它可以提供输出频率之间的快速切换,良好的频率分辨率,并在广泛的频率频谱上操作。随着设计和工艺技术的进步,今天的DDS设备非常紧凑,功耗很小。 上面是比较书面的语言,其实简单地说就是一个信号发生器模块,主要是产生频率可调的三角波正弦波。

denghuajing的博客 4865

[模型部署]-[LLM]昇腾部署Qwen3-Coder-30B-A3B-Instruct

摘要:本文介绍了在Ascend NPU上部署Qwen3-Coder-30B-A3B-Instruct大模型的实践过程。通过vLLM-Ascend框架,详细说明了环境准备(CANN 8.1、PyTorch-NPU 2.5.1等)、模型下载、容器启动及服务部署步骤,包括vLLM服务的启动参数配置和接口测试方法。测试结果显示在当前2卡910B3配置下性能表现仅为8token/s(1并发),并指出流式调用时存在无法输出usage信息的问题。该方案为Ascend平台私有化部署大模型推理服务提供了参考实现。

1672

深入解析CSS中的!important规则

当!important被添加到CSS变量声明中时,它只在赋值时起作用。这意味着在将一个值赋给变量时,!important会确保该值被赋予变量,但如果变量被用于其他地方,!important不会传递给使用该变量的属性。通过这些详细的解释和代码示例,我们可以看到!important在CSS中的强大作用,以及它如何影响样式的优先级和级联。正确理解和使用!important对于前端开发者来说至关重要,但也应该谨慎使用,以避免破坏CSS的自然层叠规则和代码的可维护性。即使是强大的CSS变量也要向!

ning的博客 4740

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 334

抛弃 `!important`,让 CSS 优先级变大

方案适用场景优点缺点提升选择器权重静态样式覆盖,遵循原生规则无副作用,可维护性高需要理解权重计算规则CSS 层叠顺序大型项目样式模块化管理层级清晰,避免权重冲突需要现代浏览器支持CSS 变量动态样式切换,主题定制灵活可控,无权重问题需要兼容旧浏览器时需降级内联样式一次性动态样式(紧急场景)权重最高,生效直接破坏样式与结构分离原则通用建议优先用提升选择器权重的方式解决样式冲突,这是最符合 CSS 设计理念的方案。大型项目推荐用CSS 层叠顺序。

老前端的功夫 1055

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1245

【保姆级】联想服务器 Ubuntu 装机:RAID 0/1/5/10 从原理到配置(新手也能一次成)

联想服务器RAID配置指南:Ubuntu系统适配方案 摘要: 联想服务器采用LSI MegaRAID硬件控制器,支持RAID0/1/10/5四种阵列模式。RAID0提供最高性能但无冗余,适合临时数据;RAID1完全镜像确保数据安全,推荐用于系统盘;RAID10兼顾性能与冗余,适合数据库等高要求场景;RAID5平衡容量与成本,适用于文件服务器。配置可通过本地BIOS(Ctrl+R)或XCC远程管理完成,Ubuntu安装时可自动识别虚拟磁盘。注意事项包括:使用同型号硬盘、监控重建进度、避免SSD与机械盘混用等。

2501_93651177的博客 490

CSS——!important

CSS的选择器是有权重的,当不同选择器的样式设置有冲突时,会采用权重高的选择器设置样式。权重(即优先级)的规则如下,权重越高,优先级越高,!important是CSS1就定义的语法,作用是提高指定样式的应用优先权。         语法格式:{cssRule !important},即写在定义的最后面,例如:box{color:red !important}声明了!important的样式,具有

等待着雨水,茁壮成长--李建敏 2705

评估篇| 大模型评测综述

1、基于人类的评测。与针对基础大语言模型的自动化评测不同,微调大语言模型的评测更加注重模型在实际应用场景中的表现,如与人类交互的自然度、对齐度等。2、基于模型的评测。例如,AlpacaEval 排行榜 基于由大语言模型合成的人类需求指令作为评测任务,然后收集待评估大模型的回应,并采用 GPT-4 等大语言模型作为评测员,将待评估大语言模型的输出与参考输出进行成对比较。1、大语言模型对评估设置极为敏感,包括问题的表述方式、提示样本的选择以及答案的解析策略等,这些细微的差别都可能导致评估结果的显著变化。

youbingchen的博客 637

css重点知识汇总(一)

自己整理的css重点知识汇总

Wzh20060111的博客 1092

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WEB前端网页设计 CSS !important 规则

CSS 中的!important 规则用于增加样式的权重。!important 与优先级无关,但它与最终的结果直接相关,使用一个!important 规则时,此声明将覆盖任何其他声明。实例#myid {.myclass {p {important;以上实例中,尽管 ID 选择器和类选择器具有更高的优先级,但三个段落背景颜色都显示为红色,因为!important 规则会覆盖 background-color 属性。

君逍遥o 639

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

CSS 重新认识 important 肯定有你不知道的

important;如果将!important添加到CSS变量声明中, 只有赋值时!important才起作用. 也就是将pink复制给变量时起了作用, 因为如果没有!important的值应该是skyblue赋值之后!important就从自定义属性上「脱落」了, 使用var()函数时并不会传递!important从下图就可以看出,.box8的背景色是red, 因为关于背景色的两条CSS声明都是一般声明.整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。

小陈的博客 4545

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

css优先级

important > 行内样式 > ID 选择器 > 类选择器/属性选择器/伪类选择器 > 元素选择器 > 通配符选择器。轮廓样式属性:outline-style、outline-width、outline-color、outline。生成内容属性:content、counter-reset、counter-increment。页面样式属性:size、page-break-before、page-break-after。盒子模型的属性:宽度、高度、内外边距、边框等。背景属性:背景图片、颜色、位置等。

mz929的博客 592

【CSS】CSS选择器优先级及!important属性

CSS的选择器是有权重的,当不同选择器的样式设置有冲突时,会采用权重高的选择器设置样式。权重(即优先级)的规则如下,权重越高,优先级越高: 同一个元素可以使用多个规则来指定它的同一样式(比如字体颜色),每个规则都有自己的选择器。显然最终只有一个规则起作用(不可能一个字既是红色又是绿色),那么该规则的特殊性最高,特殊性即css优先级。很多人仅仅知道选择器优先级ID>class>元素选择器,而不知道

LZGS_4的专栏 2万+

CSS优先级及其计算方法

1.CSS优先级比较 !important  &gt;   内联样式   &gt;   id   &gt;   class   &gt;   标签   &gt;   通配符   &gt;   继承   &gt;   默认 2.CSS权重计算 我们把特殊性分为4个等级,每个等级代表一类选择器,每个等级的值为其所代表的选择器的个数乘以这一等级的权值,最后把所有等级的值相加得出选择器的特殊值。 ...

小瑾沐晚风的博客 4637

CSS 选择器权重计算规则及 !important 的最佳实践

前端打工人的深夜崩溃瞬间:明明写了`.box p { color: red }`,结果页面里的文字还是蓝色;好不容易用`!important`强制生效,结果下周改需求时被另一个`!important`反杀……今天咱们就聊聊CSS的"隐藏规则"——选择器权重,用最接地气的话讲清计算规则和`!important`的正确用法,看完这篇,你不仅能让样式"听话",还能和面试官唠明白背后的逻辑~

前端大白话 879

在css中!important的作用

1:只能提升一条语句的优先级,不能提升一个选择器的优先级。 2:!important把被修饰的语句的优先级提升到无穷大。 3:如果被层叠的样式都使用!important修饰,那么按照语句所在选择器的权重来起作用。 4:如果是继承过来的样式,它的权重是0,!important无法属性无法提升权重为0的样式。 ...

Believer_fate的博客 4085

CSS进阶知识点速览2

div{/*边框线*//*内边距,出现在内容和盒子之间*//*外边距,两个盒子之间*/

woshicaiji12138的博客 2343

2022高频面试题之css篇

2022年前端高频面试题之css篇

qq_48962360的博客 853

关于css的优先级

关于css优先级以及权重的一些问题

weixin_54144126的博客 6147

CSS的!important属性修改权重

最近在做项目中发现很多CSS代码里面都使用!important去覆盖原有高优先级的样式。按照常理来说,越是灵活的东西,需要做的工作就会更多所以就写一篇博客梳理下!important属性。 1.定义及语法 语法格式:{ cssRule !importan},例如:box{color:red !important;}。 作用:提高指定样式规则的应用优先权(优先级)在CSS中,通过对某一样式声明! important ,可以更改默认的CSS样式优先级规则,使该条样式属性声明具有最高优先级。 2.浏览器识别

weixin_45856470的博客 1928

如何和何时使用CSS的!important

如何和何时使用CSS的!important 让我们来看一下!important是什么,以及在什么时候使用,如果你遇到类似情况,你就应该使用它。 层叠的概述 在我们对!important的正确用法进行探讨之前,让我们为本节的内容做个铺垫。之前,Smashing Magazine已经对CSS权重进行过深入的阐释。所以,如果你想详细了解CSS的层叠和权重关系就请读读这篇文章。 CSS权重...

zb0002011的博客 650
上一篇: Vue3 数据通信
下一篇: ECharts复杂业务:与tooltip的交互
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值