今天遇到一个有趣的问题,class选择器权重是10,id选择器权重是100,那么11个class选择器可以干掉1个id选择器吗?😂

先来一段简单的html测试下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<div id="k" class="a b c d e f g h i j k">xxxxx</div>
<diiv class="a">
<div class="b">
<div class="c">
<div class="d">
<div class="e">
<div class="f">
<div class="g">
<div class="h">
<div class="i">
<div class="j">
<div class="k" id="m">xxxx</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</diiv>
<style>
.a.b.c.d.e.f.g.h.i.j.k {
background: black;
}

.a .b .c .d .e .f .g .h .i .j .k {
background: red;
}

#k {
background: green;
}

#m {
background: yellow;
}
</style>

发现并不能,难道选择器的权重不是10和100?

查了MDN,同时通过Google搜索发现,张鑫旭大佬以前写过的一篇文章,总结如下:
以前浏览器通过8位字节存储选择器,于是同时出现256个选择器溢出到了id区域,但是现在这个问题早被Chrome修复了。
其它浏览器未验证,当然这只是一种有趣的极端情况,平常开发中应该不会遇到。

有趣:256个class选择器可以干掉1个id选择器