一:嵌入式
用户可在HTML文档头部定义多个style元素,实现多个样式表。
四种样式的优先级别是(从高至低):行内样式、内嵌样式、链接样式、导入样式。
所谓css优先级,即是指css样式在浏览器中被解析的先后顺序。既然样式有优先级,那么就会有一个规则来约定这个优先级,而这个“规则”就是重点。
样式表允许以多种方式规定样式信息。样式可以规定在单个的
html
元素中,在
html
页的头元素中,或在一个外部的
css
文件中。甚至可以在同一个
html
文档内部引用多个外部样式表。当同一个
html
元素被不止一个样式定义时,会使用哪个样式呢?
一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字
4
拥有最高的优先权。
•浏览器缺省设置
•外部样式表
•内部样式表(位于
标签内部)
•内联样式(在
html
元素内部)
因此,内联样式(在
html
元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明:
标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。这只是一个大方面的优先级,在前面文章中我们讲过css有很多选择器,那么对于同种样式的css,各个选择器的优先级又是如何呢?
我们将某一个css看成一个三位数,通过比较数字的大小来获取优先级的高低,那么就会相当简单。在这里可以通过下面的规则来定义各个选择器对应的数字。
•百位数是该选择器上的id的数量的总和;
•十位数是用在该选择器上的其它属性选择器和伪类的总和。这里包括class
(.example)
和属性选择器(比如
li[id=red]);
•个位数是计算元素(就像table、p、div、*等等)和伪元素(就像:first-line等);
•如果两个选择器对应的数字相等,也就是具有同样的优先级,在样式表中后面的那个起作用。
•标有"!important"的规则具有最高优先级,例如h1{color:black
!importan;
font-family:sans-serif},前景色被标为important,这个前景色具有很高的优先级。但是这种声明容易引起混乱,因此通常使用得较少。
选择器
数值
h1
{color:blue;}
1
p
em
{color:purple;}
1
+
1
=
2
.apple
{color:red;}
10
p.bright
{color:yellow;}
1
+
10
=
11
p.bright
em.dark
{color:brown;}
1
+
10
+
1
+
10
=
22
#id316
{color:yellow}
100
一般我们还可以通过浏览器的插件来查看,到底哪个css起作用,比如firebug(firefox)、developer
tools(ie8)等。上面我们介绍到当优先级相同时,哪个css起作用取决于所处的位置,通常后面的css优先级要高。但是对于ie浏览器,具有相同数值的动态css取决于添加的顺序前后,而不是添加的位置前后;后添加的优先级要高。