了解CSS的选择器优先级和!important权重

我记得上次我帮朋友编辑他的网站时,发生了一些奇怪的事情。
其中一个按钮原本是红色的,但后来无缘无故地变成了绿色。
我看代码,原来他用了三个.btn类,并且添加了send。
最后一个活动的 .class 已被覆盖。
这不是为什么 .class 的优先级高于 tag,但 .id 的优先级高于 .class。
!重要的是它有效,但整个代码让我感到困惑。
等等,还有别的事。
看起来他在错误的地方写了 !important ,导致其他按钮也发生了变化。
哎,这东西不好用,真是一把双刃剑。

CSS选择器优先级计算:!important的替代方案

我上周读了那篇头版文章。
谈谈如何不使用 !important。
非常具体。

看起来像 2 02 3 年。
发布在技术论坛上。

只是一些核心内容。

首先。
使用类和 ID。
ID具有高优先级。
但不要大意地使用它。
课程更加灵活。
header{color:red;}这个例子是正确的。
.menu-item{color:blue;} 像这样。
控制住。

第二。
不要嵌套太深。
div ul li{color:green;} 像这样。
容易搞乱。
只需更改为平面 .nav 链接即可。

第三。
使用 CSS 变量。
:root{--primary-color:blue;}.button{color:var(--primary-color);} 像这样。
容易适应。

第四。
命名为 BEM。
.button{}.button__icon{}.button--disabled{} 像这样。
发现。
明确第五。
模块化的。
CSS 模块。
类名有一个哈希值。
.Component_title_abc1 2 3 像这样。
部分。
没有冲突。

第六。
控制加载顺序。
首先加载base.css。
在 theme.css 之后加载。
装载后更换。

第七。
使用 BEM 或效用优先。
BEM 适用于大型项目。
效用第一就像 Tailwind。
使用复合类。

第八。
记住选民的偏好。
内联>ID>类>元素。
A、b、c、d是这样计算的。

第九。
为什么不使用 !important 呢?违反规则。
不容易调试。
影响组件化。

就是这样。
这取决于具体的项目。

算了。
由你决定。

CSS选择器的优先级?

嘿,你问我 CSS 优先级了吗?好的,让我们来看看你提到的六组。

几年前我在杭州做项目的时候,遇到了很多坑。
你看,这个优先级问题还真不是你可以随便看的。

1 .无条件优先属性更重要!重要:这东西确实可以包治百病,但是用多了就是灾难。
我记得2 02 2 年有一个客户项目。
因为!important被添加到某个上下文层,所以后来什么都不能改变,最后我不得不重写大部分内容。
不用说,整个IE6 Hack基本没什么用。
现在谁还在用它?除非你真的遇到这个过时的浏览器。

2 内联样式直接写在