CSS权重问题

在 CSS 中,如果多个选择器应用于同一个元素,那么就需要确定哪个选择器应该优先应用。这就是 CSS 的选择器优先级。

CSS 选择器优先级的计算是基于每个选择器的特定权重值,权重值越高的选择器就越具有优先级。选择器权重的计算方式如下:

  • 每个元素选择器的权重为1

标签选择器 (h1,a,div) 和 伪元素选择器 (::before,::after)

  • 每个类选择器的权重为10

(属性选择器a[href="https://example.org"]),以及(伪类选择器:first-child)

  • 每个ID选择器的权重为100

  • 每个内联样式的权重为1000

  • 每个!important规则的权重为无穷大

当多个选择器应用于同一元素时,它们的权重将相加以确定优先级。例如,如果一个元素同时具有以下规则:

#nava.active {
  color: red;
}
.nav-link {
  color: blue;
}

那么 #nav a.active 的权重为101(ID选择器的权重为100,加上元素选择器的权重为1),而 .nav-link 的权重为10(类选择器的权重为10)。因此,#nav a.active 的样式将覆盖.nav-link 的样式。

但是,!important规则会覆盖任何其他规则,无论其权重如何。因此,如果一个规则使用了!important,那么它的样式将始终被应用。

需要注意的是,选择器优先级的计算是相对的,只有在比较两个或多个规则应用于同一元素时才有意义。在编写 CSS 时,应该遵循一些最佳实践,例如尽可能避免使用!important,使用更具体的选择器以避免冲突,并使用样式层叠的特性来管理样式的优先级。

后代选择器 :空格 .box p

子代选择器 : > article > p

相邻兄弟选择器: +

所有兄弟选择器: ~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSS选择器的权重计算是通过CSS Specificity(特殊性)来确定的。在计算权重时,可以按照以下规则进行计算: 1. 选择器的特殊性由选择器本身的组成部分决定,包括元素选择器、类选择器、id选择器和内联样式。通常来说,id选择器的特殊性最高,其次是类选择器和属性选择器,再次是元素选择器。 2. 对于相同特殊性的选择器,后面出现的选择器会覆盖前面出现的选择器。 3. 使用!important声明的样式具有最高的特殊性,将覆盖其他所有的样式。 根据上述规则,可以用以下公式来计算选择器的权重: - id选择器:权重为1,例如#myId{} - 类选择器、属性选择器或伪类选择器:权重为10,例如.class{}、[type="text"]{}、:hover{} - 元素选择器或伪元素选择器:权重为100,例如div{}、::before{} - 内联样式:权重为1000,例如<div style="color:red;"> 在计算完各个选择器的权重后,具体的权重比较规则是:按照权重从左到右依次比较,权重值较大的样式会覆盖权重值较小的样式。 需要注意的是,CSS权重计算只适用于冲突的样式规则。如果没有发生冲突,那么所有样式规则都会生效。 总结起来,CSS选择器的权重计算是通过特殊性来确定的,特殊性由选择器本身的组成部分决定,而权重比较是按照权重从左到右依次比较的原则。这样,在编写CSS样式时,我们可以更好地控制样式的优先级。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CSS选择器与权重计算(详细)](https://blog.csdn.net/weixin_44164982/article/details/107227294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CSS选择器的权重计算](https://blog.csdn.net/u010297791/article/details/58602255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不会只能哭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值