[转贴]关于CSS specificity

by slevin 26. November 2009 10:52

 

关于CSS specificity(原帖地址:http://www.sjweb.cn/article/23.htm)
CSS
specificity 特性或称非凡性,它是衡量一个衡量CSS值优先级的一个标准,既然作为标准,就具有一套相关的判定规定及计算方式,specificity用一个四位的数字串(CSS2是三位)来表示,更像四个级别,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。 (其实这里)

在多个选择符应用于同一个元素上那么Specificity值高的最终获得优先级。



选择符Specificity值列表

Selectors
选择符

Syntax Samples
语法

ensample
示例

Specificity
特性

通配选择符(Universal Selector)

*

*.div { width:560px;}

0,0,0,0

类型选择符(Type Selectors)

E1

td { font-size:12px;}

0,0,0,1

伪类选择符(Pseudo-classes Selectors)

E1:link

a:link { font-size:12px;}

0,0,1,0

属性选择符(Attribute Selectors)

E1[attr]

h[title] {color:blue;}

0,0,1,0

ID选择符(ID Selectors)

#sID

#sj{ font-size:12px;}

0,1,0,0

类选择符(Class Selectors)

E1.className

.sjweb{color:blue;}

0,0,1,0

子对象选择符(Child Selectors)

E1 > E2

body > p {color:blue;}

E1+E2

相邻选择符(Adjacent Sibling Selectors)

E1 + E2

div + p {color:blue;}

E1+E2

选择符分组(Grouping)

E1,E2,E3

.td1,a,body {color:blue;}

E1+E2+E3

包含选择符(Descendant Selectors)

E1 E2

table td {color:blue;}

E1+E2

 

规则:

1. 行内样式优先级Specificity值为1,0,0,0,高于外部定义。

如:<div style=”color: red”>sjweb</div>

外部定义指经由<link><style>标签定义的规则;

2.!important声明的Specificity值最高;

3.Specificity值一样的情况下,按CSS代码中出现的顺序决定,后者CSS样式居上;

4.由继续而得到的样式没有specificity的计算,它低于一切其他规则(比如全局选择符*定义的规则)

 

算法:

当遇到多个选择符同时出现时候

按选择符得到的Specificity值逐位相加,

{数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0}

就得到最终计算得的specificity

然后在比较取舍时按照从左到右的顺序逐位比较。

 

实例分析:

1.div { font-size:12px;}

分析:

1个元素{ div}Specificity值为0,0,0,1

 

2.body div p{color: green;}

分析:

3个元素{ body div p }Specificity值为0,0,0,3

 

3.div .sjweb{ font-size:12px;}

分析:

1个元素{ div }Specificity值为0,0,0,1

1个类选择符{.sjweb}Specificity值为0,0,1, 0

最终:Specificity值为 0,0,1,1

 

4.Div # sjweb { font-size:12px;}

分析:

1个元素{ div }Specificity值为0,0,0,1

1个类选择符{.sjweb}Specificity值为0,1,0, 0

最终:Specificity值为 0,1,0,1

 

 

5.html > body div [id=”totals”] ul li > p {color:red;}

分析:

6个元素{ html body div ul li p}  Specificity值为0,0,0,6

1个属性选择符{ [id=”totals”] }      Specificity值为0,0,1,0

2个其他选择符{ >  > }            Specificity值为0,0,0,0

最终:Specificity值为 0,0,1,6

 

 

 

 

 

 

 

 

 

Tags:

Add comment


(Will show your Gravatar icon)

biuquote
  • Comment
  • Preview
Loading



Copyright © 2009 APJ Software

最新评论

Comment RSS

公告

欢迎使用APJ Blog!

日历

<<  September 2010  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar