CSS3 声明优先级

1 CSS3样式表的组成

在这里插入图片描述

2 选择器的特殊性

选择性的特殊性由选择器本身的组件决定,特殊性值表示为4各部分,如:0,0,0,0。特殊性值从左往右依次递减。

一个选择器的具体特殊性由以下决定:
(1) 对于选择器的ID属性值,表示为:0,1,0,0;
(2) 对于选择器中的给定的各个类属性、属性选择以及伪类,表示为:0,0,1,0;
(3) 对于选择器中给定的各个元素或伪元素,表示为:0,0,0,1;
(4) 通配符选择器的特殊性表示为:0,0,0,0;
(5) 结合符对选择器的特殊性没有一点贡献;
(6) 内联声明的特殊性表示为:1,0,0,0;
(7) 继承没有特殊性。

注意:
(1)特殊性1,0,0,0大于所有以0开头特殊性的选择器。(数量多时不进位)
(2)选择器的特殊性最终都会授予给其对应的声明。
(3)如果多个规则与同一个元素匹配,而且有些声明相互冲突时,特殊性越大的越占优势。

例如:
(1)div[id= “test”] ->其为一个元素选择器和属性选择器(选择id属性为test),因此其特殊性应该为0,0,1,1。
(2)#test ->其为一个id选择器,其特殊性为0,1,0,0。

3 重要声明

有时,某个声明比较重要,超过了其他所有的声明,CSS2.1将其称之为重要声明。并允许在这些声明的结束分号之前插入 !important 来标志。

注意:必须要准确的放置 !important的位置,否则声明无效。

标志为 !important的声明并没有特殊的特殊性值,不过,要与非重要声明分开考虑。
实际上,所有的重要声明会被浏览器分在一组,重要声明的冲突会在其内部解决。而非重要声明也会被浏览器分在一组,非重要声明的冲突也会在其内部解决。最终,如果一个重要声明与非重要声明冲突了,胜出的总是重要声明。

4 继承

继承(比如color等属性)没有特殊性,甚至连0特殊性都没有。
0特殊性(通配符)都要比无特殊性要强。

5 来源

CSS的来源主要有三种:
(1) 创作人员;(2)读者;(3)用户代理。

声明的权重:(按重要顺序降序排序)
(1) 读者的重要声明;(读者的重要声明可在IE浏览器的辅助功能中导入)
(2) 创作人员的重要声明;(浏览器控制台修改的也是创作人员的声明)
(3) 创作人员的正常声明;
(4) 读者的正常声明;
(5) 用户代理的声明。

6 层叠(最终规则)

(1)先找出所有相关的规则,这些规则都包含一个选择器;
(2)计算声明的优先级:

		①先按来源排序;
		②再按选择器的特殊性排序;
		③最终按顺序进行排序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值