要使用css對HTML頁面中的元素實現一對一,一對多或者多對一的控制,這就須要用到CSS選擇器。css
㈠什麼是選擇器?html
每一條css樣式定義由兩部分組成,形式以下: [code] 選擇器{樣式} [/code] 在{}以前的部分就是「選擇器」。服務器
「選擇器」指明瞭{}中的「樣式」的做用對象,也就是「樣式」做用於網頁中的哪些元素。ide
㈡CSS的五大選擇器字體
⑴標籤選擇器(元素選擇器)spa
⑵ID選擇器(惟一性,一次引用)code
⑶類選擇器(單類選擇器,多類選擇器)htm
⑷屬性選擇器(簡單屬性選擇,具體屬性選擇,部分屬性選擇, 特定屬性選擇)對象
⑸派生選擇器(後代選擇器(descendant selector),子元素選擇器(child selector),相鄰兄弟選擇器(Adjacent sibling selector))blog
㈢元素選擇器(標籤選擇器)
一個完整的HTML頁面是由不少不一樣的標籤組成。標籤選擇器:指用HTML標籤名稱做爲選擇器,按標籤名稱分類,爲頁面中某一類標籤指定統一的CSS樣式。
若是設置 HTML 的樣式,選擇器一般將是某個 HTML 元素,好比 p、h一、em、a,甚至能夠是 html 自己。
例如:
html {background-color: black;}
p {font-size: 30px; backgroud-color: gray;}
h2 {background-color: red;}
以上css代碼會對整個文檔添加黑色背景;將全部p元素字體大小設置爲30像素同時添加灰色背景;對文檔中全部h2元素添加紅色背景。
㈣ID 選擇器
⑴ID 選擇器容許以一種獨立於文檔元素的方式來指定樣式。
⑵ID 選擇器能夠爲標有特定 ID 的 HTML 元素指定特定的樣式。 根據元素ID來選擇元素,具備惟一性,這意味着同一id在同一文檔頁面中只能出現一次。
⑶id 選擇器以 "#" 來定義。
例如:在css中,下面的兩個 id 選擇器,第一個能夠定義元素的顏色爲紅色,第二個定義元素的顏色爲黃色:
#red{color:red;}
#yellow{color:yellow;}
下面的 HTML 代碼中,id 屬性爲 red 的 p 元素顯示爲紅色,而 id 屬性爲 green 的 p 元素顯示爲綠色。
<p id="red">這個段落是紅色。</p>
<p id="yellow">這個段落是黃色。</p>
㈤類選擇器
類選擇器使用類名來選擇元素,前提是要在HTML中,給元素定義一個class的屬性,class="類名"
,而後使用"."進行標識,後面緊跟類名。
(1)單類選擇器
類選擇器容許以一種獨立於文檔元素的方式來指定樣式。該選擇器能夠單獨使用,也能夠與其餘元素結合使用。
①修改 HTML 代碼
在使用類選擇器以前,須要修改具體的文檔標記,以便類選擇器正常工做。爲了將類選擇器的樣式與元素關聯,必須將 class 指定爲一個適當的值。
請看下面的 HTML 代碼:
<h1 class="important">
This heading is very important
</h1>
<p class="impportant">
This paragraph is very important.
</p>
在上面的代碼中,兩個元素的 class 都指定爲 important:第一個標題( h1 元素),第二個段落(p 元素)。
②語法
咱們使用如下語法向這些歸類的元素應用樣式,即類名前有一個點號(.),而後結合通配選擇器:
*.important {color:red;}
若是隻想選擇全部類名相同的元素,能夠在類選擇器中忽略通配選擇器,這沒有任何很差的影響:
.important {color:red;}
③結合元素選擇器
類選擇器能夠結合元素選擇器來使用。
♧例如,只讓段落顯示爲紅色文本:
p.important {color:red;}
選擇器如今會匹配 class 屬性包含 important 的全部 p 元素,可是其餘任何類型的元素都不匹配,不管是否有此 class 屬性。
選擇器 p.important 解釋爲:「其 class 屬性值爲 important 的全部段落」。 由於 h1 元素不是段落,這個規則的選擇器與之不匹配,所以 h1 元素不會變成紅色文本。
♧例如:爲 h1 元素指定不一樣的樣式,可使用選擇器 h1.important:
p.important {color:red;}
h1.important {color:blue;}
⑵多類選擇器
在 HTML 中,一個 class 值中可能包含一個詞列表,各個詞之間用空格分隔。
例如,若是但願將一個特定的元素同時標記爲重要(important)和警告(warning),就能夠寫做:
<p class="important warning">
This paragraph is very important warning.
</p>
注:這兩個詞的順序可有可無,寫成 warning important 也能夠。
假設 class 爲 important 的全部元素都是粗體,而 class 爲 warning 的全部元素爲斜體,class 中同時包含 important 和 warning 的全部元素還有一個銀色的背景 。
就能夠寫做:
.important {font-weight:bold;}
.warning{font-style:italic;}
.important .warning{background:silver;}
經過把兩個類選擇器連接在一塊兒,僅能夠選擇同時包含這些類名的元素(類名的順序不限)。
若是一個多類選擇器包含類名列表中沒有的一個類名,匹配就會失敗。
㈥屬性選擇器
屬性選擇器能夠根據元素的屬性及屬性值來選擇元素。
⑴簡單屬性選擇
若是但願選擇有某個屬性的元素,而不論屬性值是什麼,可使用簡單屬性選擇器。
*[title] {color:red;}
a[herf] {color:red;}
爲了將同時有 href 和 title 屬性的 HTML 超連接的文本設置爲紅色,能夠這樣寫:
a[herf] [title] {color:red;}
img[alt] {border:5px solid red;}
⑵根據具體屬性值選擇
a [href="http://www.baidu.com"] {color:red;}
a [href="http://www.baidu.com"] [title="baidu"] {color:red;}
這會把第一個超連接的文本變爲紅色,可是第二個或第三個連接不受影響:
注意:這種格式要求必須與屬性值徹底匹配。
若是屬性值包含用空格分隔的值列表,匹配就可能出問題。
⑶根據部分屬性值選擇
若是須要根據屬性值中的詞列表的某個詞進行選擇,則須要使用波浪號(~)。
選擇 class 屬性中包含 important 的元素,能夠用下面這個選擇器作到這一點:
p[class~="important"] {color:yellow;}
注意:若是忽略了波浪號,則說明須要完成徹底值匹配。
⑷特定屬性選擇類型
舉例:*[lang |="en"] {color:red;}
上面這個規則會選擇 lang 屬性等於 en 或以 en- 開頭的全部元素。所以,如下示例標記中的前三個元素將被選中,而不會選擇後兩個元素:
㈦後代選擇器
⑴後代選擇器(descendant selector)又稱爲包含選擇器。後代選擇器能夠選擇做爲某元素後代的元素。
⑵在後代選擇器中,規則左邊的選擇器一端包括兩個或多個用空格分隔的選擇器。選擇器之間的空格是一種結合符(combinator)。
⑶每一個空格結合符能夠解釋爲「... 在 ... 找到」、「... 做爲 ... 的一部分」、「... 做爲 ... 的後代」,可是要求必須從右向左讀選擇器。
舉例:只對 h1 元素中的 em 元素應用樣式,能夠這樣寫:
h1 em {colopr:red;}
⑴上面這個規則會把做爲 h1 元素後代的 em 元素的文本變爲 紅色。其餘 em 文本(如段落或塊引用中的 em)則不會被這個規則選中.
⑵h1 em 選擇器能夠解釋爲 「做爲 h1 元素後代的任何 em 元素」。若是要從左向右讀選擇器,能夠換成如下說法:「包含 em 的全部 h1 會把如下樣式應用到該 em」。
具體應用:
可使 HTML 中不可能實現的任務成爲可能。假設有一個文檔,其中有一個邊欄,還有一個主區。邊欄的背景爲藍色,主區的背景爲白色,這兩個區都包含連接列表。不能把全部連接都設置爲藍色,由於這樣一來邊欄中的藍色連接都沒法看到。解決方法是使用後代選擇器。在這種狀況下,能夠爲包含邊欄的 div 指定值爲 sidebar 的 class 屬性,並把主區的 class 屬性值設置爲 maincontent。
編寫如下樣式:
div.sidebar {background:blue;}
div.maincontent {background:white;]
div.sidebar a:link {color:white;}
div.maincontent a:link {color:blue;}
㈧子元素選擇器
⑴子元素選擇器(Child selectors)只能選擇做爲某元素子元素的元素。
⑵不但願選擇任意的後代元素,而是但願縮小範圍,只選擇某個元素的子元素,請使用子元素選擇器(Child selector)。
⑶子選擇器使用了大於號(子結合符)。子結合符兩邊能夠有空白符,這是可選的。
例如:選擇只做爲 h1 元素子元素的 strong 元素,能夠這樣編寫:
h1 > strong {color:red;}
若是從右向左讀,選擇器 h1 > strong 能夠解釋爲「選擇做爲 h1 元素子元素的全部 strong 元素」。
這個規則會把第一個 h1 下面的兩個 strong 元素變爲紅色,可是第二個 h1 中的 strong 不受影響:
㈨相鄰兄弟選擇器
⑴相鄰兄弟選擇器(Adjacent sibling selector)可選擇緊接在另外一元素後的元素,且兩者有相同父元素。
⑵相鄰兄弟選擇器使用了加號(+),即相鄰兄弟結合符(Adjacent sibling combinator)。與子結合符同樣,相鄰兄弟結合符旁邊能夠有空白符。
例如:若是要增長緊接在 h1 元素後出現的段落的上邊距,能夠這樣寫:
h1 + p {margin-top:50px;}
這個選擇器讀做:「選擇緊接在 h1 元素後出現的段落,h1 和 p 元素擁有共同的父元素」。
具體解釋:請看下面這個文檔樹片斷:
在上面的片斷中,div 元素中包含兩個列表:一個無序列表,一個有序列表,每一個列表都包含三個列表項。這兩個列表是相鄰兄弟,列表項自己也是相鄰兄弟。
不過,第一個列表中的列表項與第二個列表中的列表項不是相鄰兄弟,由於這兩組列表項不屬於同一父元素(最多隻能算堂兄弟)。
簡單來講:ul與ol是相鄰兄弟,而ul裏面的列表項與ol裏面的列表項不是相鄰兄弟。
注意:用一個結合符只能選擇兩個相鄰兄弟中的第二個元素。請看下面的選擇器:
li + li {font-weight:bold;}
上面這個選擇器只會把列表中的第二個和第三個列表項變爲粗體。第一個列表項不受影響。
參考:https://www.w3school.com.cn
但願有所幫助。