CSS样式可以有很多种选择器形式,它们的权重可以用四位数字 X X X X 来表示。
首先,HTML元素的内联样式权重最高,可以用 1 0 0 0 来表示;
其次,ID选择器的样式权重次之,可以用 0 1 0 0 来表示;
第三,类选择器、属性选择器、伪类选择器,可以用 0 0 1 0 来表示;
第四,HTML元素选择器、伪元素选择器权重最低,可以用 0 0 0 1 来表示;
第五,通配符选择器,权重完全为0,对权重无贡献,可以用 0 0 0 0 来表示。
在一个HTML文档中,页面中的每一个元素的CSS样式可以定义很多个,可以通过不同的选择器定义CSS样式,最终页面上显示的样式就是权重最高的一个。
例:
<a id="lnk1" class="cls1" name="tom" style="color: red;">TEST</a>
其CSS样式为:
#lnk1 {
color: gray;
}
.cls1 {
color: green;
}
[name="tom"] {
color: green;
}
a {
color: yellow;
}
对于lnk1来说,其color样式计算过程:
color 权重
red 1 0 0 0
gray 0 1 0 0
green 0 0 2 0
yellow 0 0 0 1
如此比较之后,red颜色权重最高,因为第一位数字权重最高,二三四位数字权重依次降低。
如果出现多个权重一致的样式,则按照其出现的先后顺序,取最后的一个。
!important
如果某个CSS样式加了!important标记,那么此样式的权重高于其他所有样式。
可以理解为:在四位数字的权重的基础上,再添加一位来表示重要样式的权重 :1 X X X X。
**************************************************************************************************
以上涉及到的CSS样式都是由网站管理员编写发布的,可以把此来源称为“作者”,一般还需要考虑另外两种样式来源:读者、用户代理。
读者,即浏览网页的用户,可以通过一些手段来修改HTML页面元素的样式。例如Firefox可以通过Firebug来修改样式。
用户代理,通常指浏览器,一些浏览器可以通过设置选项来修改页面元素的样式。
按照来源排序,CSS样式的优先级应为:
1.用户设置的重要样式。
2.作者编写的重要样式。
3.作者编写的一般样式。
4.用户设置的一般样式。
5.浏览器设置的样式。