CSS优先级的两种理解方式
方式一值相加
我们先去MDN看看官方的解释
优先级是如何计算的?
优先级就是分配给指定的 CSS 声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。
而当优先级与多个 CSS 声明中任意一个声明的优先级相等的时候,CSS 中的那个声明将会被应用到元素上。
当同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的 CSS 规则总是会接管/覆盖(take
over)该元素从祖先元素继承而来的规则。
我们从上面一段描述中得到个很重要的信息 权重
我们再来看选择器优先级关系ID选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器。
看来真相已经呼之欲出了。
我们只要给不同类型的选择器设定一个权重值,然后在根据选择器的数量进行相加,就很容易得出优先级,例如
ID选择器的权重值设为 1000
类选择器 、属性选择器 、伪类选择器的权重值设为 100
标签选择器、伪元素选择器的权重值设为 10
我们可以很快速的计算出狼蚁网站SEO优化这段CSS的权重值并作出正确的判断。
//权重值1110 #app .menu .item{} //权重值210 .menu.menu .item{} //权重值30 .item.item.item{}
可是。。。细心的你可能会发现只要低优先级的选择器数量足够多(例如: .item...x200 {} ),那么低优先级的权重值就可以超过高优先级的权重值,但实际效果其实还是以高优先级样式为准。当出现这种情况时可能用现在的权重值计算方式就无法解释了!
可以通过限制选择器的最大数量及拉大选择器的权重值数值还是可以解释的,但我总觉得这不是一种好的实现方式。
方式二bit位存储
我们假设权重值是用 unsigned int 变量存储,那么该变量的 bit 位一共有32位(4字节),我们从高位按字节展开如下
字节100000000
字节200000000
字节300000000
字节400000000
按字节和选择器对应
字节100000000
字节200000000 ;ID选择器
字节300000000 ;类选择器 、属性选择器 、伪类选择器
字节400000000 ;标签选择器、伪元素选择器
相同类型选择器直接进行个数相加,并填入到指定字节内。
例1
#app .menu .item{}
得到的权重值 bit 位如下
结果为65793
例2
.menu.menu .item{}
得到的权重值 bit 位如下
结果为513
例3
.item.item.item{}
得到的权重值 bit 位如下
结果为3
上面示例中位存储容量只有8位,所以选择器的最大限制为255,我们可以提高bit位来提高选择器的最大值。
这里介绍了2种CSS优先级理解方式,你觉得那种更适合你呢?
感兴趣的朋友可以给长沙网络推广留言,说出你的想法。
长沙网站设计
- 如何进行东阳SEO关键词优化?
- 边坝哪有关键词排名优化:提升你的网站流量与
- 安国百度优化服务:提升您的在线可见性
- 阜康新手做SEO怎么做
- 山西seo网站排名关键词优化:提升您网站曝光率
- 临沂seo网站排名关键词优化:提高你的网站可见
- 广西SEO网站推广怎样付费比较合理
- 双辽SEO网站推广:提升你的网站可见性与流量
- 辽宁企业网站优化购买方式有哪些
- 提升宝清百度SEO排名的实用技巧与策略
- 静宁百度SEO排名:提升您网站曝光率的关键策略
- 彭州百度SEO排名的提升策略和实施指南
- 广南百度关键词SEO:提升网站排名的关键策略
- 辽宁关键词优化怎么做论坛营销
- 吉林百度seo排名如何做到让用户满意
- 内黄百度优化服务:提升在线可见性的关键