1、整体角度
行间样式>内嵌样式>外部样式
2、选择器角度
ID选择器>class类选择器>标签选择器
3、属性角度
相同属性后者>前者
4、继承和特殊性角度
解决问题:(多个样式应用于同一个标签的话,就要计算他们的权值,权值大的有优先权。)
继承是指被包在内部的标签拥有外部标签的样式性质。
特殊性描述了不同规则的相对权重
它的基本规则是:
A、统计选择符中的ID属性个数。
B、统计选择符中的CLASS属性个数。
C、统计选择符中的HTML标记名格式。
·如果CSS属性是通过 (X)HTML元素的style属性定义的,则记为a=1,否则记为0;
由于style属性是写在(X)HTML标签内的,因此不存在选择器, 所以:a=1, b=0, c=0, 且 d=0;
·计算选择器中ID选择器的数量,计为b;
·计算选择器中类选择器、属性选择器和 伪类的数量,计为c;
·计算选择器中类型选择器的数量,计为d;
举例表示:
将这4个数字 (a, b, c, d)相连(数字进制要以大的为准),得到特殊性。例如:
{ …… } 特殊性 = 0, 0, 0, 0(0000)
li { …… } 特 殊性 = 0, 0, 0, 1(0001)
ul li { …… } 特殊性 = 0, 0, 0, 2 (0002)
ul ol+li { …… } 特 殊性 = 0, 0, 0, 3 (0003)
h1 + [rel="up"] { …… } 特殊性 = 0, 0, 1, 1 (0011)
ul ol li.warning { …… } 特 殊性 = 0, 0, 1, 3 (0013)
li.menu.level { …… } 特殊性 = 0, 0, 2, 1(0021)
#x34y { …… } 特 殊性 = 0, 1, 0, 0 (0100)
<p styel=”……”> 特殊性 = 1, 0, 0, 0 (1000)注意:
1、特殊性高的规则会取代特殊性低的规则,无论其书写的先后顺序如何。
2、要是一个样式被继承,不管他们的原先权值多大,继承后全部为0。
5、实例:
(关注与li标签中 服- 颜色的变化)
样式:
<style>
.nav ul li{ float:left; line-height:24px; color:#6666FF;} /* 0,0,1,2*/
.nav ul li ul li{float:none; color:#CC33FF; font-weight:bold;} /*0,0,1,4*/
/*.subnav li{ font-size:14px; line-height:30px;color:#000;;} /* 0,0,1,1*/
#subnav li{ font-size:14px; line-height:30px; float:none; color:#66CC33;} /* 0,1,0,1*/
</style>
<div class="nav">
<ul>
<li>服-<a href="#">首 页</a></li>
<li>服-<a href="#">衬 衫</a>
<ul>
<li style="float:none;">服-<a href="#">短袖衬衫</a></li>
<li style="float:none;">服-<a href="#">长袖衬衫</a></li>
</ul>
</li>
<li>服-<a href="#">卫 衣</a>
<ul class="subnav">
<li>服-<a href="#">开襟卫衣</a></li>
<li>服-<a href="#">套头卫衣</a></li>
</ul>
</li>
<li>服-<a href="#">裤 子</a>
<ul id="subnav">
<li>服-<a href="#">休闲裤</a></li>
<li>服-<a href="#">卡其裤</a></li>
</ul>
</li>
</ul>
</div>