龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > div+css/html >

总结CSS的优先级问题(CSS兼容浏览器)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
在编写CSS时,要注意过CSS的优先级问题吗? 简要总结一下 CSS的优先级 : CSS选择器本身的特殊性值可用4位数字表示(0,0,0,0),4组数字依次代表选择器中的行内(内联)选择器,ID,class,元素

在编写CSS时,要注意过CSS的优先级问题吗?

简要总结一下CSS的优先级

CSS选择器本身的特殊性值可用4位数字表示(0,0,0,0),4组数字依次代表选择器中的行内(内联)选择器,ID,class,元素选择器,如p .left可表示为0,0,1,1;div p #newsList可表示为0,1,0,2;

其中4组选择器中第三组除了类属性值外还包括属性选择以及伪类,因此(除了ie6及之前)ul li a[title="tip"]可表示为0,0,1,3。

结合符及通配选择器对特殊性无影响。

CSS的优先级由选择器的特殊性决定,由左向右逐组比较,特殊性高的选择器级别优先。也即遵循:行内选择>ID>class>标签

如:

h1{color:red;}/*0,0,0,1*/
body h1{color:green;}/*0,0,0,2*/
h2.titleInfo{color:purple;}/*0,0,1,1*/
div>ul>li a[title="a"] span{color:gray;}/*0,0,1,5*/

ID与属性选择器的特殊性

ID选择器与属性选择器存在着歧义的一种情况:

ul #first{color:red;}
ul li[id="first"]{color:green;}

两者特殊性值分别为0,1,0,1和0,0,1,1,因为#first优先级较大。

有如下例子:

<style type="text/css">
li{color:gray;}
ul li[id="first"]{color:green;}
ul li #first{color:yellow;}
ul #first{color:red;}
#first{color:blue;}
</style>
</head>

<body>
<ul>
 <li id="first">一系列选项</li>
 <li>一系列选项</li>
 <li>一系列选项</li>
 <li>一系列选项</li>
</ul>
</body>

显示效果如下(ie6,7,8,ff,opera测试通过)

注意:该css中ul li #first是一种不规范的选择方式,因为li与#first是同级关系,不能使用后代选择器。


精彩图集

赞助商链接