CSS中的ID選擇器和類選擇器區別及用法
W3C標準這樣規定的,
其一:在同一個頁面內,
不允許有相同名字的id物件出現,
但是允許相同名字的class
其二:當頁面中用到js或者要動態呼叫物件的時候,要用到id
控制頁面總共有四種方式行內方式、內嵌方式、連結方式、匯入方式, 通過這四種
方式就可以實現CSS對HTML頁面樣式的控制,如果要讓這些樣式對HTML頁面中的元素
實現一對一,一對多或者多對一的控制,這就需要用到CSS選擇器,HTML頁面中的元
素就是通過CSS選擇器進行控制的。
CSS選擇器共有三種:標籤選擇器、ID選擇器、類選擇器。
為了後面的對選擇器的解釋更容易理解,在這裡先打個比喻,如果把你所處的環境
視為HTML頁面的話,環境裡的每一個人則相當於HTML頁面內標籤元素,每個人都有
一個ID(身份證),那麼html中的每一個標籤也都有自己的ID,大家都知道ID是唯一
的,不可能重複。
【標籤選擇器】一個完整的HTML頁面是有很多不同的標籤組成,而標籤選擇器,則是決定哪些標籤
採用相應的CSS樣式,(在大環境中你可能出於不同的位置,但是不管怎麼樣,你總
是穿著同一套衣服,這件衣服就是由標籤選擇器事先給你限定好的,不管走到哪裡
都是這身衣服)比如,在style.css檔案中對p標籤樣式的宣告如下:
- p{
- font-size:12px;
- background:#900;
- color:090;
- }
複製程式碼
則頁面中所有p標籤的背景都是#900(紅色),文字大小均是12px,顏色為#090(綠色)
,這在後期維護中,如果想改變整個網站中p標籤背景的顏色,只需要修改
background屬性就可以了,就這麼容易!
【ID選擇器】ID選擇器在某一個HTML頁面中只能使用一次(當然也可以用好幾次,不過就不符合
W3C標準了,那頁面也就不是標準頁面嘍~,咱們的目的不就是為了做標準的頁面麼
,所以建議大家不要在同一個html頁面中多個標籤擁有共同的ID),就像在你所處的
環境中,你只有一個ID(身份證),不可能重複!相信大家也能看出來,ID選擇器更
具有針對性,如:
先給某個HTML頁面中的某個p標籤起個ID,程式碼如下:
- <pid="one">此處為p標籤內的文字</p>
複製程式碼
在CSS中定義ID為one的p標籤的屬性,就需要用到#,程式碼如下:
- #one{
- font-size:12px;
- background:#900;
- color:090;
- }
複製程式碼
這樣頁面中的某個p就會是CSS中定義的樣式。
【類選擇器】這種選擇器更容易理解了,就是使頁面中的某些標籤(可以是不同的標籤)具有相同
的樣式,就像國慶中某個方陣中,肯定都是不同的人,卻均穿紅色衣服,手中高舉
花環,樣式都是一樣的,如果想讓這一類人都有共同的樣式,該怎麼做呢~呵呵,和
ID選擇器的用法類似,只不過把id換做class,如下:
- <pclass="one">此處為p標籤內的文字</p>
複製程式碼
如果我還想讓div標籤也有相同的樣式,怎麼辦呢?加上同樣的class就可以了,如
下
- <divclass="one">此處為p標籤內的文字</div>
複製程式碼
這樣頁面中凡是加上class="one"的標籤,樣式都是一樣的嘍~
CSS定義的時候和ID選擇器差不多,只不過把#換成.,如下
- .one{
- font-size:12px;
- background:#900;
- color:090;
- }
複製程式碼
補充:一個標籤可以有多個類選擇器的值,不同的值用空格分開,如:
- <div class="one yellowleftStyle">此處為p標籤內的文字</div>
複製程式碼
這樣我們可以將多個樣式用到同一個標籤中,當然也可以,ID和class一塊用
- <div id="div1" class="one yellowleftStyle">此處為p標籤內的文字
- </div>
複製程式碼
【通用選擇器】到這裡,前三種基本的選擇器說完了,但是還需要給大家介紹一個CSS選擇器中功能最強大但是用的最少的一種選擇器“通用選擇器”
- *{此處為CSS程式碼}
複製程式碼
強大之處是因為他對父級中的所有HTML標籤進行樣式定義,可對具有共同樣式的標籤樣式進行定義(有點小學數學中的提取公因式),這樣可以大大精簡程式碼;既然有這麼強大的功能為什麼是用的最少呢,同樣還是因為他的強大,他是對父級元素內的所有標籤進行定義,所以只要你定義了,那麼父級裡面的所有的標籤,甭管有沒有必要,也都相當於加上了通用選擇器裡面的程式碼了,能這麼說大家不能夠完全理解,沒關係,我給大家舉個例子,請看下面
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type"content="text/html; charset=gb2312" />
- <title>無標題文件</title>
- <style type="text/css">
- <!--
- #div1 *{
- background:#eee;
- color:#333;
- }
- -->
- </style>
- </head>
- <body>
- <div id="div1">
- <p>這裡是p標籤區域</p>
- <div>這裡是a標籤區域</div>
- </div>
- <div id="div2">
- <p>這裡是p標籤區域</p>
- <div>這裡是a標籤區域</div>
- </div>
- </body>
- </html>
複製程式碼
大家執行一下上面的例子,div1裡面的兩個標籤是不是樣式一樣,這就是通用選擇器的強大之處,不管裡面有多少個標籤都會將樣式加到所有標籤內,如果div1裡面得所有的標籤都有一部分相同的CSS程式碼,那麼可以把這部分程式碼提取出來,用通用選擇器來定義,這樣可以大大縮減程式碼,但是如果div1裡面只要有一個和其他元素沒有相同的程式碼,就不能用通用選擇器來定義,這也就是CSS通用選擇器不靈活的一點。現在大家明白為什麼通用選擇器是選擇器裡面功能最強大的但又是用的最少的選擇器了吧~~呵呵
對於通用選擇器還有一個不得不提的用法,就是為了保證作出的頁面能夠相容多種瀏覽器,所以要對HTML內的所有的標籤進行重置,會將下面的程式碼加到CSS檔案的最頂端
- *{margin:0; padding:0;}
複製程式碼
為什麼要這麼用呢,因為每種瀏覽器都自帶有CSS檔案,如果一個頁面在瀏覽器載入頁面後,發現沒有CSS檔案,那麼瀏覽器就會自動呼叫它本身自帶的CSS檔案,但是不同的瀏覽器自帶的CSS檔案又都不一樣,對不同標籤定義的樣式不一樣,如果我們想讓做出的頁面能夠在不同的瀏覽器顯示出來的效果都是一樣的,那麼我們就需要對對HTML標籤重置,就是上面的程式碼了,但是這樣也有不好的地方,因為HTML4.01中有89個標籤,所以相當於在頁面載入CSS的時候,先對這89個標籤都加上了{margin:0;padding:0;},在這裡我不建議大家這麼做,因為89個標籤中需要重置的標籤是很少數,沒有必要將所有的標籤都重置,需要哪些標籤重置就讓哪些標籤重置就可以了,如下
- body,div,p,a,ul,li{margin:0; padding:0;}
複製程式碼
如果還需要dl、dt、dd標籤重置,那就在上面加上就可以了,如下
- body,div,p,a,ul,li,dl,dt,dd{margin:0; padding:0;}
複製程式碼
用到那些就寫那些,這點也可以看做衡量頁面重構師製作頁面水平的高低,以及是否專業的一個方面
到這裡大家更應該明白這句話“通用選擇器是功能最強大但是用的最少的選擇器”了吧~^_^
OK!選擇器的內容我向大家應該都明白了,後面就繼續講解一下“選擇器的集體聲
明”和“選擇器的巢狀”
【選擇器的集體宣告】
在我們使用選擇器的時候,有些標籤樣式是一樣的,或者某些標籤都有共同的樣式
屬性,我們可以將這些標籤集體宣告,不同的標籤用“,”分開,比如:
- h1,h2,h3,h4,h5,h6{color:#900;}
複製程式碼
- #one,#three,.yellow{font-size:14px;}
- #one{background:#ccc;}
- #three{background:#ccc;}
- .yellow{background:#ccc;}
複製程式碼
和小學的提取公因式差不多,把共同的部分提取出來,這麼做的好處,相同的部分
共同定義,不同的部分單獨定義,保證風格統一,樣式修改靈活,這也是優化CSS代
碼的一塊,要記住喲~
【選擇器的巢狀】
選擇器也是可以巢狀的,如:
- #div1 p a{color:#900;}
複製程式碼
這樣的好處就是不需要在單獨的為ID為div1的標籤內的p標籤內的a標籤單獨定義
class選擇器或者ID選擇器,CSS程式碼不就少了嘛~同樣也是CSS程式碼優化的一塊。
到這裡,基本的選擇器說完了,但是還需要給大家介紹一個“通用選擇器”
- *{此處為CSS程式碼}
複製程式碼
【三種CSS程式碼選擇器、選擇器的宣告、選擇器的巢狀三塊知識】