CSS教程 CSS選擇器
發(fā)布時間:2010-01-07 00:01:14 作者:佚名
我要評論
上節(jié)課我們講了一下CSS通過什么方式去控制頁面,如果不記得,我來幫大家回憶一下,總共有四種方式行內(nèi)方式、內(nèi)嵌方式、鏈接方式、導(dǎo)入方式
上節(jié)課我們講了一下CSS通過什么方式去控制頁面,如果不記得,我來幫大家回憶一下,總共有四種方式行內(nèi)方式、內(nèi)嵌方式、鏈接方式、導(dǎo)入方式,大家通過這四種方式就可以實現(xiàn)CSS對HTML頁面樣式的控制,如果要讓這些樣式對HTML頁面中的元素實現(xiàn)一對一,一對多或者多對一的控制,這就需要用到CSS選擇器,HTML頁面中的元素就是通過CSS選擇器進行控制的。
CSS選擇器共有三種:標(biāo)簽選擇器、ID選擇器、類選擇器。
為了后面的對選擇器的解釋更容易理解,在這里先打個比喻,如果把你所處的環(huán)境視為HTML頁面的話,環(huán)境里的每一個人則相當(dāng)于HTML頁面內(nèi)標(biāo)簽元素,每個人都有一個ID(身份證),那么html中的每一個標(biāo)簽也都有自己的ID,大家都知道ID是唯一的,不可能重復(fù)。
【標(biāo)簽選擇器】
一個完整的HTML頁面是有很多不同的標(biāo)簽組成,而標(biāo)簽選擇器,則是決定哪些標(biāo)簽采用相應(yīng)的CSS樣式,(在大環(huán)境中你可能出于不同的位置,但是不管怎么樣,你總是穿著同一套衣服,這件衣服就是由標(biāo)簽選擇器事先給你限定好的,不管走到哪里都是這身衣服)比如,在style.css文件中對p標(biāo)簽樣式的聲明如下:
p{
font-size:12px;
background:#900;
color:090;
}
則頁面中所有p標(biāo)簽的背景都是#900(紅色),文字大小均是12px,顏色為#090(綠色),這在后期維護中,如果想改變整個網(wǎng)站中p標(biāo)簽背景的顏色,只需要修改background屬性就可以了,就這么容易!
【ID選擇器】
ID選擇器在某一個HTML頁面中只能使用一次(當(dāng)然也可以用好幾次,不過就不符合W3C標(biāo)準(zhǔn)了,那頁面也就不是標(biāo)準(zhǔn)頁面嘍~,咱們的目的不就是為了做標(biāo)準(zhǔn)的頁面么,所以建議大家不要在同一個html頁面中多個標(biāo)簽擁有共同的ID),就像在你所處的環(huán)境中,你只有一個ID(身份證),不可能重復(fù)!相信大家也能看出來,ID選擇器更具有針對性,如:
先給某個HTML頁面中的某個p標(biāo)簽起個ID,代碼如下:
<p id="one">此處為p標(biāo)簽內(nèi)的文字</p>
在CSS中定義ID為one的p標(biāo)簽的屬性,就需要用到#,代碼如下:
#one{
font-size:12px;
background:#900;
color:090;
}
這樣頁面中的某個p就會是CSS中定義的樣式。
【類選擇器】
這種選擇器更容易理解了,就是使頁面中的某些標(biāo)簽(可以是不同的標(biāo)簽)具有相同的樣式,就像國慶中某個方陣中,肯定都是不同的人,卻均穿紅色衣服,手中高舉花環(huán),樣式都是一樣的,如果想讓這一類人都有共同的樣式,該怎么做呢~呵呵,和ID選擇器的用法類似,只不過把id換做class,如下:
<p class="one">此處為p標(biāo)簽內(nèi)的文字</p>
如果我還想讓div標(biāo)簽也有相同的樣式,怎么辦呢?加上同樣的class就可以了,如下
<div class="one">此處為p標(biāo)簽內(nèi)的文字</div>
這樣頁面中凡是加上class="one"的標(biāo)簽,樣式都是一樣的嘍~CSS定義的時候和ID選擇器差不多,只不過把#換成.,如下
.one{
font-size:12px;
background:#900;
color:090;
}
補充:一個標(biāo)簽可以有多個類選擇器的值,不同的值用空格分開,如:
<div class="one yellow leftStyle">此處為p標(biāo)簽內(nèi)的文字</div>
這樣我們可以將多個樣式用到同一個標(biāo)簽中,當(dāng)然也可以,ID和class一塊用
<div id="div1" class="one yellow leftStyle">此處為p標(biāo)簽內(nèi)的文字
</div>
【通用選擇器】
到這里,前三種基本的選擇器說完了,但是還需要給大家介紹一個CSS選擇器中功能最強大但是用的最少的一種選擇器“通用選擇器”
*{此處為CSS代碼}
強大之處是因為他對父級中的所有HTML標(biāo)簽進行樣式定義,可對具有共同樣式的標(biāo)簽樣式進行定義(有點小學(xué)數(shù)學(xué)中的提取公因式),這樣可以大大精簡代碼;既然有這么強大的功能為什么是用的最少呢,同樣還是因為他的強大,他是對父級元素內(nèi)的所有標(biāo)簽進行定義,所以只要你定義了,那么父級里面的所有的標(biāo)簽,甭管有沒有必要,也都相當(dāng)于加上了通用選擇器里面的代碼了,能這么說大家不能夠完全理解,沒關(guān)系,我給大家舉個例子,請看下面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標(biāo)題文檔</title>
<style type="text/css">
<!--
#div1 *{
background:#eee;/*設(shè)置DIV1里面所有的元素背景均為灰色*/
color:#333;/*設(shè)置置DIV1里面所有的元素的字體顏色均為黑色*/
}
-->
</style>
</head>
<body>
<div id="div1">
<p>這里是p標(biāo)簽區(qū)域</p>
<div>這里是a標(biāo)簽區(qū)域</div>
</div>
<div id="div2">
<p>這里是p標(biāo)簽區(qū)域</p>
<div>這里是a標(biāo)簽區(qū)域</div>
</div>
</body>
</html>
大家運行一下上面的例子,div1里面的兩個標(biāo)簽是不是樣式一樣,這就是通用選擇器的強大之處,不管里面有多少個標(biāo)簽都會將樣式加到所有標(biāo)簽內(nèi),如果div1里面得所有的標(biāo)簽都有一部分相同的CSS代碼,那么可以把這部分代碼提取出來,用通用選擇器來定義,這樣可以大大縮減代碼,但是如果div1里面只要有一個和其他元素沒有相同的代碼,就不能用通用選擇器來定義,這也就是CSS通用選擇器不靈活的一點。現(xiàn)在大家明白為什么通用選擇器是選擇器里面功能最強大的但又是用的最少的選擇器了吧~~呵呵
對于通用選擇器還有一個不得不提的用法,就是為了保證作出的頁面能夠兼容多種瀏覽器,所以要對HTML內(nèi)的所有的標(biāo)簽進行重置,會將下面的代碼加到CSS文件的最頂端
*{margin:0; padding:0;}
為什么要這么用呢,因為每種瀏覽器都自帶有CSS文件,如果一個頁面在瀏覽器加載頁面后,發(fā)現(xiàn)沒有CSS文件,那么瀏覽器就會自動調(diào)用它本身自帶的CSS文件,但是不同的瀏覽器自帶的CSS文件又都不一樣,對不同標(biāo)簽定義的樣式不一樣,如果我們想讓做出的頁面能夠在不同的瀏覽器顯示出來的效果都是一樣的,那么我們就需要對對HTML標(biāo)簽重置,就是上面的代碼了,但是這樣也有不好的地方,因為HTML4.01中有89個標(biāo)簽,所以相當(dāng)于在頁面加載CSS的時候,先對這89個標(biāo)簽都加上了{margin:0; padding:0;},在這里我不建議大家這么做,因為89個標(biāo)簽中需要重置的標(biāo)簽是很少數(shù),沒有必要將所有的標(biāo)簽都重置,需要哪些標(biāo)簽重置就讓哪些標(biāo)簽重置就可以了,如下
body,div,p,a,ul,li{margin:0; padding:0;}
如果還需要dl、dt、dd標(biāo)簽重置,那就在上面加上就可以了,如下
body,div,p,a,ul,li,dl,dt,dd{margin:0; padding:0;}
用到那些就寫那些,這點也可以看做衡量頁面重構(gòu)師制作頁面水平的高低,以及是否專業(yè)的一個方面到這里大家更應(yīng)該明白這句話“通用選擇器是功能最強大但是用的最少的選擇器”了吧~^_^
OK!選擇器的內(nèi)容我向大家應(yīng)該都明白了,后面就繼續(xù)講解一下“選擇器的集體聲
明”和“選擇器的嵌套”
【選擇器的集體聲明】
在我們使用選擇器的時候,有些標(biāo)簽樣式是一樣的,或者某些標(biāo)簽都有共同的樣式屬性,我們可以將這些標(biāo)簽集體聲明,不同的標(biāo)簽用“,”分開,比如:
h1,h2,h3,h4,h5,h6{color:#900;}
#one,#three,.yellow{font-size:14px;}
#one{background:#ccc;}
#three{background:#ccc;}
.yellow{background:#ccc;}
和小學(xué)的提取公因式差不多,把共同的部分提取出來,這么做的好處,相同的部分共同定義,不同的部分單獨定義,保證風(fēng)格統(tǒng)一,樣式修改靈活,這也是優(yōu)化CSS代碼的一塊,要記住喲~
【選擇器的嵌套】
選擇器也是可以嵌套的,如:
#div1 p a{color:#900;}/*意思是在ID為div1
內(nèi)的p標(biāo)簽內(nèi)的鏈接a標(biāo)簽的文字顏色為紅色*/
這樣的好處就是不需要在單獨的為ID為div1的標(biāo)簽內(nèi)的p標(biāo)簽內(nèi)的a標(biāo)簽單獨定義class選擇器或者ID選擇器,CSS代碼不就少了嘛~同樣也是CSS代碼優(yōu)化的一塊。
到這里,基本的選擇器說完了,但是還需要給大家介紹一個“通用選擇器”
*{此處為CSS代碼}
好,這節(jié)課主要講解了三種CSS代碼選擇器、選擇器的聲明、選擇器的嵌套三塊知識,要掌握好,如果有不懂,可以留言。
CSS選擇器共有三種:標(biāo)簽選擇器、ID選擇器、類選擇器。
為了后面的對選擇器的解釋更容易理解,在這里先打個比喻,如果把你所處的環(huán)境視為HTML頁面的話,環(huán)境里的每一個人則相當(dāng)于HTML頁面內(nèi)標(biāo)簽元素,每個人都有一個ID(身份證),那么html中的每一個標(biāo)簽也都有自己的ID,大家都知道ID是唯一的,不可能重復(fù)。
【標(biāo)簽選擇器】
一個完整的HTML頁面是有很多不同的標(biāo)簽組成,而標(biāo)簽選擇器,則是決定哪些標(biāo)簽采用相應(yīng)的CSS樣式,(在大環(huán)境中你可能出于不同的位置,但是不管怎么樣,你總是穿著同一套衣服,這件衣服就是由標(biāo)簽選擇器事先給你限定好的,不管走到哪里都是這身衣服)比如,在style.css文件中對p標(biāo)簽樣式的聲明如下:
復(fù)制代碼
代碼如下:p{
font-size:12px;
background:#900;
color:090;
}
則頁面中所有p標(biāo)簽的背景都是#900(紅色),文字大小均是12px,顏色為#090(綠色),這在后期維護中,如果想改變整個網(wǎng)站中p標(biāo)簽背景的顏色,只需要修改background屬性就可以了,就這么容易!
【ID選擇器】
ID選擇器在某一個HTML頁面中只能使用一次(當(dāng)然也可以用好幾次,不過就不符合W3C標(biāo)準(zhǔn)了,那頁面也就不是標(biāo)準(zhǔn)頁面嘍~,咱們的目的不就是為了做標(biāo)準(zhǔn)的頁面么,所以建議大家不要在同一個html頁面中多個標(biāo)簽擁有共同的ID),就像在你所處的環(huán)境中,你只有一個ID(身份證),不可能重復(fù)!相信大家也能看出來,ID選擇器更具有針對性,如:
先給某個HTML頁面中的某個p標(biāo)簽起個ID,代碼如下:
<p id="one">此處為p標(biāo)簽內(nèi)的文字</p>
在CSS中定義ID為one的p標(biāo)簽的屬性,就需要用到#,代碼如下:
復(fù)制代碼
代碼如下:#one{
font-size:12px;
background:#900;
color:090;
}
這樣頁面中的某個p就會是CSS中定義的樣式。
【類選擇器】
這種選擇器更容易理解了,就是使頁面中的某些標(biāo)簽(可以是不同的標(biāo)簽)具有相同的樣式,就像國慶中某個方陣中,肯定都是不同的人,卻均穿紅色衣服,手中高舉花環(huán),樣式都是一樣的,如果想讓這一類人都有共同的樣式,該怎么做呢~呵呵,和ID選擇器的用法類似,只不過把id換做class,如下:
<p class="one">此處為p標(biāo)簽內(nèi)的文字</p>
如果我還想讓div標(biāo)簽也有相同的樣式,怎么辦呢?加上同樣的class就可以了,如下
<div class="one">此處為p標(biāo)簽內(nèi)的文字</div>
這樣頁面中凡是加上class="one"的標(biāo)簽,樣式都是一樣的嘍~CSS定義的時候和ID選擇器差不多,只不過把#換成.,如下
復(fù)制代碼
代碼如下:.one{
font-size:12px;
background:#900;
color:090;
}
補充:一個標(biāo)簽可以有多個類選擇器的值,不同的值用空格分開,如:
<div class="one yellow leftStyle">此處為p標(biāo)簽內(nèi)的文字</div>
這樣我們可以將多個樣式用到同一個標(biāo)簽中,當(dāng)然也可以,ID和class一塊用
<div id="div1" class="one yellow leftStyle">此處為p標(biāo)簽內(nèi)的文字
</div>
【通用選擇器】
到這里,前三種基本的選擇器說完了,但是還需要給大家介紹一個CSS選擇器中功能最強大但是用的最少的一種選擇器“通用選擇器”
*{此處為CSS代碼}
強大之處是因為他對父級中的所有HTML標(biāo)簽進行樣式定義,可對具有共同樣式的標(biāo)簽樣式進行定義(有點小學(xué)數(shù)學(xué)中的提取公因式),這樣可以大大精簡代碼;既然有這么強大的功能為什么是用的最少呢,同樣還是因為他的強大,他是對父級元素內(nèi)的所有標(biāo)簽進行定義,所以只要你定義了,那么父級里面的所有的標(biāo)簽,甭管有沒有必要,也都相當(dāng)于加上了通用選擇器里面的代碼了,能這么說大家不能夠完全理解,沒關(guān)系,我給大家舉個例子,請看下面
復(fù)制代碼
代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標(biāo)題文檔</title>
<style type="text/css">
<!--
#div1 *{
background:#eee;/*設(shè)置DIV1里面所有的元素背景均為灰色*/
color:#333;/*設(shè)置置DIV1里面所有的元素的字體顏色均為黑色*/
}
-->
</style>
</head>
<body>
<div id="div1">
<p>這里是p標(biāo)簽區(qū)域</p>
<div>這里是a標(biāo)簽區(qū)域</div>
</div>
<div id="div2">
<p>這里是p標(biāo)簽區(qū)域</p>
<div>這里是a標(biāo)簽區(qū)域</div>
</div>
</body>
</html>
大家運行一下上面的例子,div1里面的兩個標(biāo)簽是不是樣式一樣,這就是通用選擇器的強大之處,不管里面有多少個標(biāo)簽都會將樣式加到所有標(biāo)簽內(nèi),如果div1里面得所有的標(biāo)簽都有一部分相同的CSS代碼,那么可以把這部分代碼提取出來,用通用選擇器來定義,這樣可以大大縮減代碼,但是如果div1里面只要有一個和其他元素沒有相同的代碼,就不能用通用選擇器來定義,這也就是CSS通用選擇器不靈活的一點。現(xiàn)在大家明白為什么通用選擇器是選擇器里面功能最強大的但又是用的最少的選擇器了吧~~呵呵
對于通用選擇器還有一個不得不提的用法,就是為了保證作出的頁面能夠兼容多種瀏覽器,所以要對HTML內(nèi)的所有的標(biāo)簽進行重置,會將下面的代碼加到CSS文件的最頂端
*{margin:0; padding:0;}
為什么要這么用呢,因為每種瀏覽器都自帶有CSS文件,如果一個頁面在瀏覽器加載頁面后,發(fā)現(xiàn)沒有CSS文件,那么瀏覽器就會自動調(diào)用它本身自帶的CSS文件,但是不同的瀏覽器自帶的CSS文件又都不一樣,對不同標(biāo)簽定義的樣式不一樣,如果我們想讓做出的頁面能夠在不同的瀏覽器顯示出來的效果都是一樣的,那么我們就需要對對HTML標(biāo)簽重置,就是上面的代碼了,但是這樣也有不好的地方,因為HTML4.01中有89個標(biāo)簽,所以相當(dāng)于在頁面加載CSS的時候,先對這89個標(biāo)簽都加上了{margin:0; padding:0;},在這里我不建議大家這么做,因為89個標(biāo)簽中需要重置的標(biāo)簽是很少數(shù),沒有必要將所有的標(biāo)簽都重置,需要哪些標(biāo)簽重置就讓哪些標(biāo)簽重置就可以了,如下
body,div,p,a,ul,li{margin:0; padding:0;}
如果還需要dl、dt、dd標(biāo)簽重置,那就在上面加上就可以了,如下
body,div,p,a,ul,li,dl,dt,dd{margin:0; padding:0;}
用到那些就寫那些,這點也可以看做衡量頁面重構(gòu)師制作頁面水平的高低,以及是否專業(yè)的一個方面到這里大家更應(yīng)該明白這句話“通用選擇器是功能最強大但是用的最少的選擇器”了吧~^_^
OK!選擇器的內(nèi)容我向大家應(yīng)該都明白了,后面就繼續(xù)講解一下“選擇器的集體聲
明”和“選擇器的嵌套”
【選擇器的集體聲明】
在我們使用選擇器的時候,有些標(biāo)簽樣式是一樣的,或者某些標(biāo)簽都有共同的樣式屬性,我們可以將這些標(biāo)簽集體聲明,不同的標(biāo)簽用“,”分開,比如:
復(fù)制代碼
代碼如下:h1,h2,h3,h4,h5,h6{color:#900;}
#one,#three,.yellow{font-size:14px;}
#one{background:#ccc;}
#three{background:#ccc;}
.yellow{background:#ccc;}
和小學(xué)的提取公因式差不多,把共同的部分提取出來,這么做的好處,相同的部分共同定義,不同的部分單獨定義,保證風(fēng)格統(tǒng)一,樣式修改靈活,這也是優(yōu)化CSS代碼的一塊,要記住喲~
【選擇器的嵌套】
選擇器也是可以嵌套的,如:
#div1 p a{color:#900;}/*意思是在ID為div1
內(nèi)的p標(biāo)簽內(nèi)的鏈接a標(biāo)簽的文字顏色為紅色*/
這樣的好處就是不需要在單獨的為ID為div1的標(biāo)簽內(nèi)的p標(biāo)簽內(nèi)的a標(biāo)簽單獨定義class選擇器或者ID選擇器,CSS代碼不就少了嘛~同樣也是CSS代碼優(yōu)化的一塊。
到這里,基本的選擇器說完了,但是還需要給大家介紹一個“通用選擇器”
*{此處為CSS代碼}
好,這節(jié)課主要講解了三種CSS代碼選擇器、選擇器的聲明、選擇器的嵌套三塊知識,要掌握好,如果有不懂,可以留言。
相關(guān)文章

CSS3打造的現(xiàn)代交互式登錄界面詳細實現(xiàn)過程
本文介紹CSS3和jQuery在登錄界面設(shè)計中的應(yīng)用,涵蓋動畫、選擇器、自定義字體及盒模型技術(shù),提升界面美觀與交互性,同時優(yōu)化性能和可訪問性,感興趣的朋友跟隨小編一起看看吧2025-06-20CSS普通流、浮動與定位網(wǎng)頁布局三大機制及最佳實踐
本文給大家講解CSS 的三種核心布局機制——普通流(Normal Flow)、浮動(Float)和定位(Positioning)對于創(chuàng)建靈活、響應(yīng)式的網(wǎng)頁至關(guān)重要,本文將深入探討這三種機制的工作原2025-06-19
css實現(xiàn)角標(biāo)效果并帶有文章或圖標(biāo)效果(完整代碼)
文章介紹如何用CSS實現(xiàn)角標(biāo)效果,通過.active類結(jié)合::after和::before偽元素,利用定位、邊框和旋轉(zhuǎn)創(chuàng)建紅色邊框與白色三角形的提示標(biāo)志,適用于按鈕或卡片元素的視覺增強設(shè)計2025-06-19CSS Anchor Positioning重新定義錨點定位的時代來臨(最新推薦)
CSS Anchor Positioning是一項仍在草案中的新特性,由 Chrome 125 開始提供原生支持需啟用實驗 flag,它允許你在 CSS 中通過錨點(anchor)來相對于任意 DOM 元素定位,本文2025-06-17CSS中的Static、Relative、Absolute、Fixed、Sticky的應(yīng)用與詳細對比
CSS 中的 position 屬性用于控制元素的定位方式,不同的定位方式會影響元素在頁面中的布局和層疊關(guān)系,以下是 static、relative、absolute、fixed、sticky 的詳細對比和應(yīng)用2025-06-17CSS place-items: center解析與用法詳解
place-items: center; 是一個強大的 CSS 簡寫屬性,用于同時控制 網(wǎng)格(Grid) 和 彈性盒(Flexbox) 布局中的對齊方式,本文給大家介紹CSS place-items: center; 詳解與用法2025-06-17
在日常開發(fā)中,我們經(jīng)常需要讓某個元素占據(jù)容器的剩余空間,本文將介紹5種不同的方法來實現(xiàn)這個需求,并分析各種方法的優(yōu)缺點,感興趣的朋友一起看看吧2025-06-17CSS中前端單位 px、vw、vh 等的區(qū)別與使用建議
CSS單位區(qū)別與使用場景總結(jié):px絕對、vw/vh響應(yīng)式,%繼承父尺寸,em/rem文字縮放,vmin/vmax適應(yīng)寬高變化,固定布局用px或%,響應(yīng)式布局用vw/vh/rem,文字用em或rem,本文給大家2025-06-16CSS 樣式表的四種應(yīng)用方式及css注釋的應(yīng)用小結(jié)
這篇文章主要介紹了CSS 樣式表的四種應(yīng)用方式及css注釋的應(yīng)用小結(jié),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2025-05-21- 在CSS布局中,padding屬性是控制元素內(nèi)容與其邊框之間距離的關(guān)鍵工具,本文介紹CSS基礎(chǔ)中padding,通過本文的介紹,我們深入了解了padding的基本概念、簡寫方法以及它對元2025-05-16




