CSS選擇器彙總以及除錯DEMO
大部分資訊來自於BAIDU,部分資訊自己新增。
CSS選擇器
樣式表呼叫一般情況下包含如下兩種:
頁面內嵌法:
就是將樣式表直接寫在頁面程式碼的head區。類似這樣:
<style type="text/css">body { background : white ; color : black ; } </style>
外部呼叫法:
將樣式表寫在一個獨立的.css檔案中,然後在頁面head區用類似以下程式碼呼叫。
<link rel="stylesheet"rev="stylesheet" href="css/style.css"type="text/css" media="all" />
什麼是選擇器呢?
每一條css樣式定義由兩部分組成,形式如下: [code] 選擇器{樣式}[/code] 在{}之前的部分就是“選擇器”。 “選擇器”指明瞭{}中的“樣式”的作用物件,也就是“樣式”作用於網頁中的哪些元素
1 類別選擇器
類選擇器根據類名來選擇前面以”.”來標誌,如:
.demoDiv{
color:#FF0000;
}
在HTML中,元素可以定義一個class的屬性。如:
<divclass="demoDiv">
這個區域字型顏色為紅色
</div>
同時,我們可以再定義一個元素:
<pclass="demoDiv">
這個段落字型顏色為紅色
</p>
最後,用瀏覽器瀏覽,我們可以發現所有class為demoDiv的元素都應用了這個樣式。包括了頁面中的div元素和p元素。
上例我們給兩個元素都定義了class,但如果有很多個元素都會應用這個元素,那得一個個的定義元素,就會造成頁面重複的程式碼太多,這種現象稱為“多類症”。
我們可以改成這樣來定義。
<divclass="demoDiv">
<div>
這個區域字型顏色為紅色
</div>
同時,我們可以再定義一個元素:
<p>
這個段落字型顏色為紅色
</p>
</div>
這樣,我們就只是定義了一個類,同時把樣式應用到了所有的元素當中。
DEMO:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>類別選擇器20140317</title>
</head>
<styletype="text/css">
.demoDiv{
color:#FF0000;
}
</style>
<body>
<divclass="demoDiv">
這個區域字型顏色為紅色
</div>
<pclass="demoDiv">
這個區域字型顏色為紅色
</p>
<divclass="demoDiv">
這個區域字型顏色為紅色
</div>
<p>
這個段落字型顏色為紅色
</p>
</body>
</html>
2 標籤選擇器
一個完整的HTML頁面是有很多不同的標籤組成,而標籤選擇器,則是決定哪些標籤
採用相應的CSS樣式,(在大環境中你可能出於不同的位置,但是不管怎麼樣,你總
是穿著同一套衣服,這件衣服就是由標籤選擇器事先給你限定好的,不管走到哪裡
都是這身衣服)比如,在style.css檔案中對p標籤樣式的宣告如下:
p{
background:#900;
color:090;
}
複製程式碼則頁面中所有p標籤的背景都是#900(紅色),文字大小均是12px,顏色為#090(綠色),這在後期維護中,如果想改變整個網站中p標籤背景的顏色,只需要修改
background屬性就可以了,就這麼容易!
DEMO:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>標籤選擇器20140317</title>
</head>
<styletype="text/css">
.demoDiv{
color:#FF0000;
}
p{
font-size:24px;
background:#900;
color:090;
}
</style>
<body>
<p> test</p>
</body>
</html>
3 ID選擇器
根據元素ID來選擇元素,具有唯一性。
前面以”#”號來標誌,在樣式裡面可以這樣定義:
#demoDiv{
color:#FF0000;
}
這裡代表id為demoDiv的元素的設定它的字型顏色為紅色。
我們在頁面上定義一個元素把它的ID定義為demoDiv,如:
<divid="demoDiv">
這個區域字型顏色為紅色
</div>
用瀏覽器瀏覽,我們可以看到因為區域內的顏色變成了紅色
再定義一個區域
<div>
這個區域沒有定義顏色
</div>
用瀏覽器瀏覽,與預期的一樣,區域沒有應用樣式,所以區域中的字型顏色還是預設的顏色黑色。
DEMO:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>ID選擇器20140317</title>
</head>
<styletype="text/css">
#demoDiv{
color:#FF0000;
}
</style>
<body>
<divid="demoDiv"> <strong> RED </strong> </div>
</body>
</html>
1.4 後代選擇器
後代選擇器也稱為包含選擇器,用來選擇特定元素或元素組的後代,後代選擇器用兩個常用選擇器,中間加一個空格表示。其中前面的常用選擇器選擇父元素,後面的常用選擇器選擇子元素,樣式最終會應用於子元素中。
如:
<style>
.father.child{
color:#0000CC;
}
</style>
<pclass="father">
黑色
<labelclass="child">藍色
<b>也是藍色</b>
</label>
</p>
這裡我們定義了所有class屬性為father的元素下面的class屬性為child的顏色為藍色。後代選擇器是一種很有用的選擇器,使用後代選擇器可以更加精確的定位元素。
DEMO
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>後代選擇器20140317</title>
<style>
.grandpa {
color:#CC0000;
}
.grandpa .father{
color:#00CC00;
}
.grandpa .father.child{
color:#0000CC;
}
</style>
</head>
<body>
<pclass="grandpa">
RED
</p>
<divclass="grandpa">RED
<pclass="father"> GREEN <labelclass="child">BLUE</label></p> </div>
</p>
</body>
</html>
1.5 子選擇器
請注意這個選擇器與後代選擇器的區別,子選擇器(child selector)僅是指它的直接後代,或者你可以理解為作用於子元素的第一個後代。而後代選擇器是作用於所有子後代元素。後代選擇器通過空格來進行選擇,而子選擇器是通過“>”進行選擇,我們看下面的程式碼:
Example SourceCode
CSS:
#links a{color:red;}
#links > a{color:blue;}
HTML:
<pid="links">
<ahref="#">Div+CSS教程</a>>
<span><ahref="#">CSS佈局例項</a></span>
<span><ahref="#">CSS2.0教程</a></span>
</p>
我們將會看到第一個連結元素“Div+CSS教程”會顯示成藍色,而其它兩個元素會顯示成紅色。當然,或許你的瀏覽器並不支援這樣的CSS選擇符。我們在一開始也強調了不太相容的現狀。
子選擇器(>)和後代選擇器(空格)的區別:都表示“祖先-後代”的關係,但是>必須是“爸爸>兒子”,而空格不僅可以是“爸爸兒子”,還能是“爺爺兒”、“太爺爺兒子”。
6 偽類選擇器
有時候還會需要用文件以外的其他條件來應用元素的樣式,比如滑鼠懸停等。這時候我們就需要用到偽類了。以下是連結應用的偽類定義。
a:link{
color:#999999;
}
a:visited{
color:#FFFF00;
}
a:hover{
color:#006600;
}
/* IE不支援,用Firefox瀏覽可以看到效果 */
input:focus{
background:#E0F1F5;
}
Link表示連結在沒有被點選時的樣式。Visited表示連結已經被訪問時的樣式。Hover表示當滑鼠懸停在連結上面時的樣式。
偽類不僅可以應用在連結標籤中,也可以應用在一些表單元素中,但表單元素的應用IE不支援,所以一般偽類都只會被應用在連結的樣式上。
7 通用選擇器
通用選擇器用*來表示。例如:
*{
font-size: 12px;
}
表示所有的元素的字型大小都是12px;同時通用選擇器還可以和後代選擇器組合。
例如:
p *{
……
}
表示所有p元素後代的所有元素都應用這個樣式。但是與後代選擇器的搭配容易出現瀏覽器不能解析的情況,比如像這樣子:
<p>
所有的文字都被定義成紅色
<b>所有這個段落裡面的子標籤都會被定義成藍色</b>
<p>所有這個段落裡面的子標籤都會被定義成藍色</p>
<b>所有這個段落裡面的子標籤都會被定義成藍色</b>
<em>所有這個段落裡面的子標籤都會被定義成藍色</em>
</p>
這個例子裡面p標籤裡面嵌套了一個p標籤,這個時候樣式可能會出現與預期結果不相同的結果。
8 群組選擇器
當幾個元素樣式屬性一樣時,可以共同呼叫一個宣告,元素之間用逗號分隔。如:
p, td, li {
color:#c00;
}
#main p, #siderspan {
color:#000;
line-height:26px;
}
.www_52css_com,#mainp span {
color:#f60;
}
.text1 h1,#siderh3,.art_title h2 {
}
使用群組選擇器,將會大大的簡化CSS程式碼,將具有多個相同屬性的元素,合併群組進行選擇,定義同樣的CSS屬性,這大大的提高了編碼效率,同時也減少了CSS檔案的體積。
9 相鄰同胞選擇器
我們除了上面的子選擇器與後代選擇器,我們可能還希望找到兄弟兩個當中的一個,如一個標題h1元素後面緊跟了兩個段落p元素,我們想定位第一個段落p元素,對它應用樣式。我們就可以使用相鄰同胞選擇器。看下面的程式碼:
Example SourceCode CSS
h1 + p{color:blue}
HTML
<h1>一個非常專業的CSS站點</h1>
<p>Div+CSS教程中,介紹了很多關於CSS網頁佈局的知識。</p>
<p>CSS佈局例項中,有很多與CSS佈局有關的案例。</p>
我們將會看到第一個段落“Div+CSS教程中,介紹了很多關於CSS網頁佈局的知識。”文字顏色將會是藍色。而第二段則不受此CSS樣式的影響。
+和~的區別:類似上面一個,兩者都表示兄弟關係,但是+必須是“大哥+二哥”,~還能是“大哥~三弟”、“二哥~四妹”
DEMO:
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>ID選擇器20140317</title>
<style>
h1 + p{color:blue}
</style>
</head>
<body>
<h1>h1</h1>
<p>CSS佈局例項中,有很多與CSS佈局有關的案例。</p>
<p>CSS佈局例項中,有很多與CSS佈局有關的案例。</p>
<p>Div+CSS教程中,介紹了很多關於CSS網頁佈局的知識。</p>
<p>CSS佈局例項中,有很多與CSS佈局有關的案例。</p>
</body>
</html>
10 屬性選擇器
您可以用判斷html標籤的某個屬性是否存在的方法來定義css
例如:
abbr[title]{
color:#FF0000;
}
表示abbr標籤是否有title屬性,如果有則應用這個樣式。
也可以用判斷html標籤的某個屬性值的方法來定義css
例如:
p[title='app']{ color:#FF0000;
}
這裡所有p標籤中,title屬性為app的都會應用這個樣式。
總結
css3定義中有更多的選擇器型別,但由於各瀏覽器支援不一,所以不推薦使用,在此不詳細敘述。