深入學習網頁技術CSS中選擇符的應用

來源:互聯網
上載者:User
css|網頁

一.選擇符模式
模式/含義/內容描述

*
匹配任意元素。(通用選取器)
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 。(識別碼選取器)

引用內容:

以上來自http://www.w3.org/TR/CSS2/selector.html

我們用下面的例子來解釋“父元素”、“子項目”、“父/子”及“相鄰”這幾個概念。

<div title="這是一個div">
 <h1>這是是h1的內容</h1>
 <p>這是一個段落p的內容!<strong>這裡是strong的內容</strong>這是一個段落p的內容!</p>
</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 內的內容二字變為綠色,我們可以有哪些方法呢?

div strong {color:green;} /* - 正確。strong 是 div 的“子項目”*/
p > strong {color:green;} /* - 正確。strong 和 p 是“父/子”關係*/
div > strong {color:green;} /* - 錯誤!strong 雖然是 div 的“子(孫)元素”,但兩者乃是“祖孫”關係,而非“父/子”關係,因此不能用 > 符號串連*/

臨近選取器和通用選取器:通用選取器以星號“*”表示,可以用於替代任何 tag 。

執行個體:
h2 + * { color:green }/*所有緊隨 h2 的元素內的文字都將呈現紅色*/

二.選擇符分類介紹

1.通配選擇符
文法:
* { sRules }

說明:
通配選擇符。選定文檔分類樹(DOM)中的所有類型的單一對象。
假如通配選擇符不是單一選擇符中的唯一組成,“*”可以省略。
插入代碼:

樣本:
*[lang=fr] { font-size:14px; width:120px; }
*.div { text-decoration:none; }
2.類型選擇符
文法:
E { sRules }

說明:
類型選擇符。以文檔語言對象(Element)類型作為選擇符。
樣本:

td { font-size:14px; width:120px; }
a { text-decoration:none; }

3.屬性選擇符
文法:
E [ attr ] { sRules }
E [ attr = value ] { sRules }
E [ attr ~= value ] { sRules }
E [ attr |= value ] { sRules }

說明:
屬性選擇符。
選擇具有 attr 屬性的 E
選擇具有 attr 屬性且屬性值等於 value 的 E
選擇具有 attr 屬性且屬性值為一用空格分隔的字詞列表,其中一個等於 value 的 E 。這裡的 value 不能包含空格
選擇具有 attr 屬性且屬性值為一用連字號分隔的字詞列表,由 value 開始的 E
樣本:

h[title] { color: blue; }
/* 所有具有title屬性的h對象 */  
span[class=demo] { color: red; }  
div[speed="fast"][dorun="no"] { color: red; }  
a[rel~="copyright"] { color:black; }

4.包含選擇符
文法:
E1 E2 { sRules }

說明:
包含選擇符。選擇所有被 E1 包含的 E2 。即 E1.contains(E2)==true 。
樣本:

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

5.子物件選擇符
文法:
E1 > E2 { sRules }

說明:
子物件選擇符。選擇所有作為 E1 子物件的 E2 。
樣本:

body > p { font-size:14px; }
/* 所有作為body的子物件的p對象字型尺寸為14px */
div ul>li p { font-size:14px; }

6.ID選擇符
文法:
#ID { sRules }

說明:
ID選擇符。以文檔分類樹(DOM)中作為對象的唯一識別碼的 ID 作為選擇符。
樣本:

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

7.類選擇符
文法:
E.className { sRules }

說明:
類選擇符。在HTML中可以使用此種選擇符。其效果等同於E [ class ~= className ] 。請參閱屬性選擇符( Attribute Selectors )。
在IE5+,可以為對象的 class 屬性(特性)指定多於一個值( className ),其方法是指定用空格隔開的一組樣式表的類名。例如:< div class="class1 class2" >。
樣本:

div.note { font-size:14px; }
/* 所有class屬性值等於(包含)"note"的div對象字型尺寸為14px */
.dream { font-size:14px; }
/* 所有class屬性值等於(包含)"note"的對象字型尺寸為14px */

8.選擇符分組
文法:
E1 , E2 , E3 { sRules }

說明:
選擇符分組。將同樣的定義應用於多個選擇符,可以將選擇符以逗號分隔的方式並為組。
樣本:

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

9.偽類及偽對象選擇符

文法:
E : Pseudo-Classes { sRules }
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]。
樣本:

div:first-letter { font-size:14px; }
a.fly :hover { font-size:14px; color:red; }



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。