CSS 权重问题

14 篇文章 0 订阅

权重等级

  • 行内内嵌样式

行内样式包含在你的 html 标签中 对你的元素产生直接作用,权重最大,但是不能声明伪类样式

<div style="position:absolute;color:red;">test</div>
  • ID 选择器

ID 一般用来作为元素的唯一标识,权重第二

  • 类选择器、属性选择器、伪类选择器

属性选择器:针对标签中的属性的选择器(这个形容有点书面,具体自己理解)

/* 设置 input 标签中 title 为 test 的标签字体颜色 */
input[title="test"] {
    color:#39f;
}

伪类选择器:link、visited、hover、active(注意:对链接设置样式,必须注意顺序

.tes:hover{
    color: #39f;
}
  • 元素选择器,伪元素选择器

伪元素选择器:

/* 伪元素选择器 */
::after
::before
::first-letter
::first-line
::selecton

具体权重

选择器权重
行内元素样式1000
ID 选择器100
类、伪类、属性选择器10
元素、伪元素选择器1
通配符 *0

 下面的栗子是转自《你应该知道的一些事情——CSS权重》,可以自行测试一下

*{}                         ====》0
li{}                        ====》1(一个元素)
li:first-line{}             ====》2(一个元素,一个伪元素)
ul li {}                    ====》2(两个元素)
ul ol+li{}                  ====》3(三个元素)
h1+ *[rel=up] {}            ====》11(一个属性选择器,一个元素)
ul ol li.red{}              ====》13(一个类,三个元素)
li.red.level{}              ====》21(两个类,一个元素)
style=""                    ====》1000(一个行内样式)
p {}                        ====》1(一个元素)
div p {}                    ====》2(两个元素)
.sith {}                    ====》10(一个类)
div p.sith{}                ====》12(一个类,两个元素)
#sith{}                     ====》100(一个ID选择器)
body #darkside .sith p {}   ====》112(1+100+10+1,一个Id选择器,一个类,两个元素)

权重计算规则

  • 相同权重,依据最后一个选择器为准
  • 不同权重,权重最高的选择器为准
  • 就近法则,与元素“挨得近”的规则生效
/* CSS 文件中 */
.test {
    color: #ccc;
}

/* HTML 文件中 */
<style>
    .test {
        color: #39f;
    }
</style>

/* 此时样式依据 HTML 文件中的选择器计算,元素字体颜色为 #39f */

  • 后面定义的样式会覆盖之前的样式
  • 无论多少个元素选择器,权重都不会超过一个类选择器,其他的类比

注意事项

  • 设置链接样式,注意 link、visited、hover、active 的顺序
  • 减少选择器个数,选择器嵌套不宜太深,因为 CSS 匹配是从选择器右到左
  • 避免使用 !important ,“!important”会覆盖所有的样式规则,会使之前的样式都失效
  • 适当使用 ID 选择器,增加权重

参考文章

《你应该知道的一些事情——CSS权重》(文章大多数参考此文章,其他是一些自己的笔记)

  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值