一.选择符模式
模式/含义/内容描述

*
 
匹配任意元素。(通用选择器) 
E
 
匹配任意元素 E (例如一个类型为 E 的元素)。(类型选择器) 
E F
 
匹配元素 E 的任意后代元素 F 。(后代选择器) 
E > F
 
匹配元素 E 的任意子元素F 。(子选择器) 
E:first-child
 
当元素 E 是它的父元素中的第一个子元素时,匹配元素 E 。(:first-child 伪类) 
E:link E:visited
 
如果 E 是一个目标还没有访问过(:link)或者已经访问过(:visited)的超链接的源锚点时匹配元素 E 。(link 伪类) 
E:active E:hover E:focus
 
在确定的用户动作中匹配 E 。(动态伪类) 
E:lang(c)
 
如果类型为 E 的元素使用了(人类)语言 c (文档语言确定语言是如何被确定的),则匹配该元素。(:lang() 伪类) 
E + F
 
如果一个元素 E 直接在元素 F 之前,则匹配元素 F 。(临近选择器) 
E[foo]
 
匹配具有”foo”属性集(不考虑它的值)的任意元素 E 。(属性选择器) 
E[foo="warning"]
 
匹配其“foo”属性值严格等于“warning”的任意元素 E 。(属性选择器) 
E[foo~="warning"]
 
匹配其“foo”属性值为空格分隔的值列表,并且其中一个严格等于“warning”的任意元素 E 。(属性选择器) 
E[lang|="en"]
 
匹配其“lang”属性具有以“en”开头(从左边)的值的列表的任意元素 E 。(属性选择器) 
DIV.warning
 
仅 HTML。用法同DIV[class~="warning"]。(类选择器) 
E#myid
 
匹配 ID 等于“myid”的任意元素 E 。(ID 选择器) 

From:http://www.w3.org/TR/CSS2/selector.html



我们用下面的例子来解释“父元素”、“子元素”、“父/子”及“相邻”这几个概念。

1.   

2.  <div title="这是一个div">

3.  <h1>这是是h1的内容</h1>

4.  <p>这是一个段落p的内容!<strong>这里是strong的内容</strong>这是一个段落p的内容!</p>

5.  </div>


从以上代码中,我们可以找出这样的关系:

·        h1 和 p 同为 div 的“儿子”,两者分别同 div 形成“父/子”关系。

·        h1,p,strong 都是 div 的“子元素”。(三者都包含在 div 之内)

·        div 是 h1 和 p 的“父元素”。

·        strong 和 p 形成“父/子”关系,strong 的“父元素”是 p 。

·        但strong 和 div 并非“父/子”关系,而是“祖孙”关系,但 strong 依然是 div的“子(孙)元素”。

·        div 是 h1 p strong 三者的“祖先”,三者是 div 的“子(孙)元素”。

·        h1 和 p 两者是相邻的。



继承上面的实例来具体演示一下E F的关系:假如,我们需要将 strong 内的内容二字变为绿色,我们可以有哪些方法呢?

1.  div strong {color:green;} /* 正确。strong div 子元素”*/

2.  p > strong {color:green;} /* 正确。strong p /关系*/

3.  div > strong {color:green;} /* 错误!strong 虽然是 div 子(孙)元素,但两者乃是祖孙关系,而非/关系,因此不能用 > 符号连接*/



临近选择器和通用选择器:通用选择器以星号“*”表示,可以用于替代任何 tag 。
实例:

1.      h2 + * { color:green }/*所有紧随 h2 的元素内的文字都将呈现红色*/



二.选择符分类介绍

1.
通配选择符
语法:

1.  * { sRules }


说明:
通配选择符。选定文档目录树(DOM)中的所有类型的单一对象。
假如通配选择符不是单一选择符中的唯一组成,“*”可以省略。
 
示例:

1.  *[lang=fr] { font-size:14px;width:120px; } 

2.  *.div { text-decoration:none; }



2.
类型选择符
语法:

1.  E { sRules }


说明:
类型选择符。以文档语言对象(Element)类型作为选择符。
 
示例:

1.  td { font-size:14px; width:120px; } 

2.  a { text-decoration:none; }


3.
属性选择符
语法:

1.  E [ attr ] { sRules } 

2.  E [ attr = value ] { sRules } 

3.  E [ attr ~= value ] { sRules } 

4.  E [ attr |= value ] { sRules }


说明:
属性选择符。
 
选择具有 attr 属性的E 
选择具有 attr 属性且属性值等于 value 的 E 
选择具有 attr 属性且属性值为一用空格分隔的字词列表,其中一个等于 value 的 E 。这里的value 不能包含空格 
选择具有 attr 属性且属性值为一用连字符分隔的字词列表,由 value 开始的 E 
示例:

1.  h[title] { color: blue; } 

2.  /* 所有具有title属性的h对象 */ 

3.   

4.  span[class=demo] { color: red; } 

5.   

6.  div[speed="fast"][dorun="no"]{ color: red; } 

7.   

8.  a[rel~="copyright"] {color:black; }


4.
包含选择符
语法:

1.  E1 E2 { sRules }

复制代码


说明:
包含选择符。选择所有被 E1 包含的 E2 。即 E1.contains(E2)==true 。
 
示例:

1.  table td { font-size:14px; } 

2.   

3.  div.sub a { font-size:14px; }


5.
子对象选择符
语法:

1.  E1 > E2 { sRules }


说明:
子对象选择符。选择所有作为 E1 子对象的 E2 。
 
示例:

1.  body > p { font-size:14px; } 

2.  /* 所有作为body的子对象的p对象字体尺寸为14px */ 

3.   

4.  div ul>li p { font-size:14px; }


6.ID
选择符
语法:

1.  #ID { sRules }


说明:
ID选择符。以文档目录树(DOM)中作为对象的唯一标识符的ID 作为选择符。
 
示例:

1.  #note { font-size:14px; width:120px;}


7.
类选择符
语法:

1.  E.className { sRules }


说明:
类选择符。在HTML中可以使用此种选择符。其效果等同于E [class ~= className ] 。请参阅属性选择符( Attribute Selectors )。
在IE5+,可以为对象的 class 属性(特性)指定多于一个值(className ),其方法是指定用空格隔开的一组样式表的类名。例如:<div>。
 
示例:

1.  div.note { font-size:14px; } 

2.  /* 所有class属性值等于(包含)"note"div对象字体尺寸为14px */ 

3.   

4.  .dream { font-size:14px; } 

5.  /* 所有class属性值等于(包含)"note"的对象字体尺寸为14px */



8.
选择符分组
语法:

1.  E1 , E2 , E3 { sRules }


说明:
选择符分组。将同样的定义应用于多个选择符,可以将选择符以逗号分隔的方式并为组。
 
示例:

1.  .td1,div a,body { font-size:14px; }

2.  td,div,a { font-size:14px; }



9.
伪类及伪对象选择符

语法:

1.  E : Pseudo-Classes { sRules } 

2.  E : Pseudo-Elements { sRules }


说明:
伪类及伪对象选择符。
 
伪类选择符。请参阅伪类( Pseudo-Classes )[:link:hover :active :visited :focus :first-child :first :left :right :lang]。 
伪对象选择符。请参阅伪对象( Pseudo-Elements)[:first-letter :first-line :before :after]。 
示例:

1.  div:first-letter { font-size:14px; } 

2.  a.fly :hover { font-size:14px;color:red; }

转载出处:http://bbs.blueidea.com/thread-2524749-1-1.html