CSS層疊樣式表是一系列格式設(shè)置的規(guī)則,它們控制網(wǎng)頁(yè)內(nèi)容的外觀。使用CSS設(shè)置頁(yè)面格式時(shí),可以將內(nèi)容與表現(xiàn)形式分開(kāi)。網(wǎng)頁(yè)內(nèi)容(即HTML代碼)駐留在HTML文件自身中,而用于定義代碼表現(xiàn)形式的CSS規(guī)則駐留在另一個(gè)文件(外部樣式表)或HTML文檔的另一部分(通常為文件頭部分)中。使用CSS可以更加靈活地控制具體的頁(yè)面外觀,從精確的布局定位到特定的字體和樣式。
CSS允許控制HTML無(wú)法獨(dú)自控制的許多屬性。例如,可以為選定的文本指定不同的字體大小和單位(像素、磅值等)。通過(guò)CSS可以用像素為單位來(lái)設(shè)置字體大小,從而可以確保在多個(gè)瀏覽器中以更一致的方式處理頁(yè)面布局和外觀。除設(shè)置文本格式外,還可以使用CSS控制網(wǎng)頁(yè)中塊級(jí)別元素的格式和定位。例如,可以設(shè)置塊級(jí)別元素的邊距和邊框,其他文本周圍的浮動(dòng)文本等。
CSS格式設(shè)置規(guī)則由選擇器和聲明兩部分組成,其中選擇器是標(biāo)識(shí)格式元素的術(shù)語(yǔ)(如p、h1、類名或id),聲明用于定義元素樣式。
CSS的主要優(yōu)點(diǎn)是提供了便利的更新功能。設(shè)計(jì)網(wǎng)站時(shí),可以創(chuàng)建一個(gè)CSS樣式表文件,然后將網(wǎng)站中的所有網(wǎng)頁(yè)都連接到該樣式表文件,這樣很容易為Web站點(diǎn)內(nèi)的所有網(wǎng)頁(yè)提供一致的外觀和風(fēng)格。當(dāng)更新某一樣式屬性時(shí),使用該樣式的所有網(wǎng)頁(yè)的格式都會(huì)自動(dòng)更新為新樣式,而不必逐頁(yè)進(jìn)行修改。
可以用以下三種方式將樣式表加入您的網(wǎng)頁(yè)。而最接近目標(biāo)的樣式定義優(yōu)先權(quán)越高。高優(yōu)先權(quán)樣式將繼承低優(yōu)先權(quán)樣式的未重疊定義但覆蓋重疊的定義。1、 鏈入外部樣式表文件 (Linking to a Style Sheet)
可以先建立外部樣式表文件(.css),然后使用HTML的link對(duì)象。示例如下:
http://www.dhtmlet.com/rainer.css type="text/css">;
而在XML中,你應(yīng)該如下例所示在聲明區(qū)中加入:
xml-stylesheet="" type="text/css" href="http://www.dhtmlet.com/rainer.css>;
2、定義內(nèi)部樣式塊對(duì)象 (Embedding a Style Block)
可以在你的HTML文檔的和標(biāo)記之間插入一個(gè) 塊對(duì)象。
請(qǐng)注意,這里將style對(duì)象的type屬性設(shè)置為“text/css”,是允許不支持這類型的瀏覽器忽略樣式表單。
3、內(nèi)聯(lián)定義 (Inline Styles)
內(nèi)聯(lián)定義即是在對(duì)象的標(biāo)記內(nèi)使用對(duì)象的style屬性定義適用其的樣式表屬性。
這一行被增加了左右的外補(bǔ)丁
樣式表語(yǔ)法 (CSS Syntax)
Selector { property:value }
參數(shù)說(shuō)明:
Selector -- 選擇符
property: value -- 樣式表定義。屬性和屬性值之間用冒號(hào)(:)隔開(kāi)。定義之間用分號(hào)(;)隔開(kāi)
繼承的值 (The ‘Inherit ’Value)每個(gè)屬性都有一個(gè)指定的值:Inherit。它的意思是:將父對(duì)象的值等同為計(jì)算機(jī)值得到。這個(gè)值通常僅僅是備用的。顯式的聲明它可用來(lái)強(qiáng)調(diào)。上面這些可能對(duì)于初學(xué)者來(lái)說(shuō)還不太好理解,但主要是明白CSS就相當(dāng)于網(wǎng)頁(yè)的衣服一樣,學(xué)會(huì)用了就好辦。WEB標(biāo)準(zhǔn)提倡樣式(即CSS)與結(jié)構(gòu)(HTML,XML等)分離,所以學(xué)會(huì)CSS的應(yīng)用就顯得更加重要了。 ;
從1990年代初HTML被發(fā)明開(kāi)始樣式表就以各種形式出現(xiàn)了,不同的瀏覽器結(jié)合了它們各自的樣式語(yǔ)言,讀者可以使用這些樣式語(yǔ)言來(lái)調(diào)節(jié)網(wǎng)頁(yè)的顯示方式。一開(kāi)始樣式表是給讀者用的,最初的HTML版本只含有很少的顯示屬性,讀者來(lái)決定網(wǎng)頁(yè)應(yīng)該怎樣被顯示。隨著HTML的成長(zhǎng),為了滿足設(shè)計(jì)師的要求,HTML獲得了很多顯示功能。隨著這些功能的增加外來(lái)定義樣式的語(yǔ)言越來(lái)越?jīng)]有意義了。
1994年哈坤·利提出了CSS的最初建議。伯特·波斯(Bert Bos)當(dāng)時(shí)正在設(shè)計(jì)一個(gè)叫做Argo的瀏覽器,他們決定一起合作設(shè)計(jì)CSS。有過(guò)一些樣式表語(yǔ)言的建議,但CSS是第一個(gè)含有“層疊”的主意的。在CSS中,一個(gè)文件的樣式可以從其它的樣式表中繼承下來(lái)。讀者在有些地方可以使用他自己更喜歡的樣式,在其他地方則繼承,或“層疊”作者的樣式。這種層疊的方式使作者和讀者都可以靈活地加入自己的設(shè)計(jì),混合各人的愛(ài)好。
哈坤于1994年在芝加哥的一次會(huì)議上第一次展示了CSS的建議,1995年他與波斯一起再次展示這個(gè)建議。當(dāng)時(shí)W3C剛剛建立,W3C對(duì)CSS的發(fā)展很感興趣,它為此組織了一次討論會(huì)。哈坤、波斯和其他一些人(比如微軟的托馬斯·雷爾登)是這個(gè)項(xiàng)目的主要技術(shù)負(fù)責(zé)人。1996年底,CSS已經(jīng)完成。1996年12月CSS要求的第一版本被出版。
1997年初,W3C內(nèi)組織了專門管CSS的工作組,其負(fù)責(zé)人是克里斯·里雷。這個(gè)工作組開(kāi)始討論第一版中沒(méi)有涉及到的問(wèn)題,其結(jié)果是1998年5月出版的第二版要求。到2004年為止,第三版還未出版。
1996年W3C正式推出了CSS1;
1998年W3C正式推出了CSS2;
CSS2.1是W3C現(xiàn)在正在推薦使用的;
CSS3現(xiàn)在還處于開(kāi)發(fā)中。
網(wǎng)頁(yè)設(shè)計(jì)中常用的CSS屬性
文字或元素的顏色 color
背景顏色 background-color
背景圖像 background-image
字體 font-family
文字大小 font-size
列表樣式 list
鼠標(biāo)樣式 cursor
邊框樣式 border
內(nèi)補(bǔ)白 padding
外邊距 margi
選擇符(selector),屬性(properties)和屬性的取值(value)。
語(yǔ)法:selector {property:value} (選擇符 {屬性:值})
1、說(shuō)明
選擇符是可以是多種形式,一般是你要定義樣式的HTML標(biāo)記,例如BODY、P、TABLE,你可以通過(guò)此方法定義它的屬性和值,屬性和值要用冒號(hào)隔開(kāi):例子:body {color:black},此例的效果是使頁(yè)面中的文字為黑色。如果屬性的值是多個(gè)單詞組成,必須在值上加引號(hào),比如字體的名稱經(jīng)常是幾個(gè)單詞的組合:例子:p {font-family: "sans serif"} (定義段落字體為sans serif)如果需要對(duì)一個(gè)選擇符指定多個(gè)屬性時(shí),使用分號(hào)將所有的屬性和值分開(kāi):例子:p {text-align:center;color: red} (段落居中排列;并且段落中的文字為紅色)
2、選擇符組
可以把相同屬性和值的選擇符組合起來(lái)書(shū)寫,用逗號(hào)將選擇符分開(kāi),這樣可以減少樣式重復(fù)定義:h1, h2, h3, h4, h5, h6 { color: green } (這個(gè)組里包括所有的標(biāo)題元素,每個(gè)標(biāo)題元素的文字都為綠色)p, table{ font-size:9pt } (段落和表格里的文字尺寸為9號(hào)字)
效果完全等效于:
p { font-size:9pt }
table { font-size:9pt }
3、類選擇符
用類選擇符你能夠把相同的元素分類定義不同的樣式,定義類選擇符時(shí),在自定類的名稱前面加一個(gè)點(diǎn)號(hào)。假如你想要兩個(gè)不同的段落,一個(gè)段落向右對(duì)齊,一個(gè)段落居中,你可以先定義兩個(gè)類:
p.right {text-align: right}
p.center {text-align:center}
然后用不在不同的段落里,只要在HTML標(biāo)記里加入你定義的class參數(shù):
這個(gè)段落向右對(duì)齊的
這個(gè)段落是居中排列的
類選擇符還有一種用法,在選擇符中省略HTML標(biāo)記名,
center {text-align: center} (定義.center的類選擇符為文字居中排列)這樣的類可以被應(yīng)用到任何元素上。下面使h1元素(標(biāo)題1)和p元素(段落)都?xì)w為“center”類,這使兩個(gè)元素的樣式都跟隨“.center”這個(gè)類選擇符:
這個(gè)標(biāo)題是居中排列的
這個(gè)段落也是居中排列的
這種省略HTML標(biāo)記的類選擇符是經(jīng)后最常用的CSS方法,使用這種方法,可以很方便的在任意元素上套用預(yù)先定義好的類樣式。
4、ID選擇符
在HTML頁(yè)面中ID參數(shù)指定了某個(gè)單一元素,ID選擇符是用來(lái)對(duì)這個(gè)單一元素定義單獨(dú)的樣式。ID選擇符的應(yīng)用和類選擇符類似,只要把CLASS換成ID即可。將上例中類用ID替代:這個(gè)段落向右對(duì)齊定義ID選擇符要在ID名稱前加上一個(gè)“#”號(hào)。和類選擇符相同,定義ID選擇符的屬性也有兩種方法。下面這個(gè)例子,ID屬性將匹配所有id="intro"的元素:
#intro
{
font-size:110%;
font-weight:bold;
color:#0000ff;
background-color:transparent
} (字體尺寸為默認(rèn)尺寸的110%;粗體;藍(lán)色;背景顏色透明)
下面這個(gè)例子,ID屬性只匹配id="intro"的段落元素:
p#intro
{
font-size:110%;
font-weight:bold;
color:#0000ff;
background-color:transparent
}
ID選擇符局限性很大,只能單獨(dú)定義某個(gè)元素的樣式,一般只在特殊情況下使用。
5、包含選擇符可以單獨(dú)對(duì)某種元素包含關(guān)系定義的樣式表,元素1里包含元素2,這種方式只對(duì)在元素1里的元素2定義,對(duì)單獨(dú)的元素1或元素2無(wú)定義,例如:
table a
{
font-size:12px
}
在表格內(nèi)的鏈接改變了樣式,文字大小為12象素,而表格外的鏈接的文字仍為默認(rèn)大小。
6、樣式表的層疊性
層疊性就是繼承性,樣式表的繼承規(guī)則是外部的元素樣式會(huì)保留下來(lái)繼承給這個(gè)元素所包含的其他元素。事實(shí)上,所有在元素中嵌套的元素都會(huì)繼承外層元素指定的屬性值,有時(shí)會(huì)把很多層嵌套的樣式疊加在一起,除非另外更改。例如在DIV標(biāo)記中嵌套P標(biāo)記:
div { color: red; font-size:9pt}
這個(gè)段落的文字為紅色9號(hào)字(P元素里的內(nèi)容會(huì)繼承DIV定義的屬性)
有些情況下內(nèi)部選擇符不繼承周圍選擇符的值,但理論上這些都是特殊的。例如,上邊界屬性值是不會(huì)繼承的,直覺(jué)上,一個(gè)段落不會(huì)同文檔BODY一樣的上邊界值。另外,當(dāng)樣式表繼承遇到?jīng)_突時(shí),總是以最后定義的樣式為準(zhǔn)。如果上例中定義了P的顏色:
div { color: red; font-size:9pt}
p {color: blue}
p { color:#FF0000!important }
blue { color:#0000FF}
#id1 { color:#FFFF00}
同時(shí)對(duì)頁(yè)面中的一個(gè)段落加上這三種樣式,它最后會(huì)依照被!important申明的HTML標(biāo)記選擇符樣式為紅色文字。如果去掉!important,則依照優(yōu)先權(quán)最高的ID選擇符為黃色文字。
7、注釋
在CSS中插入注釋來(lái)說(shuō)明你代碼的意思,注釋有利于你或別人以后編輯和更改代碼時(shí)理解代碼的含義。在瀏覽器中,注釋是不顯示的。CSS注釋以"/*" 開(kāi)頭,以"*/" 結(jié)尾,如下:
/* 定義段落樣式表 */
p
{
text-align: center; /* 文本水平居中排列 */
color: black; /* 文字為黑色 */
font-family: arial /* 字體為arial */
}
css可以用任何寫文本的工具進(jìn)行開(kāi)發(fā),如文本工具,dreamweaver開(kāi)發(fā)。css也是一種語(yǔ)言,這種語(yǔ)言要和html或者xhtml語(yǔ)言相結(jié)合才起作用,css簡(jiǎn)單來(lái)說(shuō)就是用來(lái)美化網(wǎng)頁(yè)用的,用css語(yǔ)言來(lái)控制網(wǎng)頁(yè)的外觀舉個(gè)例子xhtml部分:主頁(yè)、留言、論壇,此時(shí)在頁(yè)面上的表達(dá)形式是一個(gè)豎向列表,這樣不夠美觀,可以css來(lái)改善這個(gè)列表為一個(gè)橫向?qū)Ш綏l和超鏈接:
css部分:
ul{
list-style:none;
margin:0px;/*設(shè)置IE瀏覽器的縮進(jìn)*/
padding:0px;/*設(shè)置標(biāo)準(zhǔn)瀏覽器的縮進(jìn)*/
}
ul li{margin:0px;padding:0px;float:left;}
ul li a{display:block;width:100px;height:30px;background:#efefef;color:#333;text-decoration:none;text-align:center}
ul li a:hover{background:#333;color:#fff;}
添加上css后,這個(gè)列表變成橫向的導(dǎo)航條了,超級(jí)鏈接是淡色背景,灰色字體,沒(méi)有下劃線,高度是30像素,寬度是100像素當(dāng)鼠標(biāo)經(jīng)過(guò)這個(gè)超級(jí)鏈接時(shí)候,變成灰色背景,白色字體在主頁(yè)制作時(shí)采用CSS技術(shù),可以有效地對(duì)頁(yè)面的布局、字體、顏色、背景和其它效果實(shí)現(xiàn)更加精確的控制。只要對(duì)相應(yīng)的代碼做一些簡(jiǎn)單的修改,就可以改變同一頁(yè)面的不同部分,或者頁(yè)數(shù)不同的網(wǎng)頁(yè)的外觀和格式。
它的作用可以達(dá)到:
(1)在幾乎所有的瀏覽器上都可以使用。
(2)以前一些非得通過(guò)圖片轉(zhuǎn)換實(shí)現(xiàn)的功能,現(xiàn)在只要用CSS就可以輕松實(shí)現(xiàn),從而更快地下載頁(yè)面。
(3)使頁(yè)面的字體變得更漂亮,更容易編排,使頁(yè)面真正賞心悅目。
(4)你可以輕松地控制頁(yè)面的布局 。
(5)你可以將許多網(wǎng)頁(yè)的風(fēng)格格式同時(shí)更新,不用再一頁(yè)一頁(yè)地更新了。你可以將站點(diǎn)上所有的網(wǎng)頁(yè)風(fēng)格都使用一個(gè)CSS文件進(jìn)行控制,只要修改這個(gè)CSS文件中相應(yīng)的行,那么整個(gè)站點(diǎn)的所有頁(yè)面都會(huì)隨之發(fā)生變動(dòng)。
沒(méi)有使用CSS前是如何控制字體的顏色和大小以及所使用的字體的?一般使用HTML標(biāo)簽來(lái)實(shí)現(xiàn),代碼非常煩瑣。很難想象,如果在一個(gè)頁(yè)面里需要頻繁地更替字體的顏色大小,最終生成的HTML代碼的長(zhǎng)度一定臃腫不堪。CSS就是為了簡(jiǎn)化這樣的工作誕生的,當(dāng)然其功能決非這么簡(jiǎn)單。CSS是通過(guò)對(duì)頁(yè)面結(jié)構(gòu)的風(fēng)格控制的思想,控制整個(gè)頁(yè)面的風(fēng)格的。式樣單放在頁(yè)面中,通過(guò)瀏覽器的解釋執(zhí)行,是完全的文本,任何懂得HTML的人都可以掌握,非常的容易。甚至對(duì)一些非常老的瀏覽器,也不會(huì)產(chǎn)生頁(yè)面混亂的現(xiàn)象。CSS的一大優(yōu)點(diǎn)是它的圖片傳輸速度比較完全的HTML網(wǎng)頁(yè)要快一點(diǎn)。
CSS具有兩面性。就像它在格式化文本、導(dǎo)航欄、圖片以及其他小小的網(wǎng)頁(yè)方面很棒一樣,當(dāng)你準(zhǔn)備好布局完整的網(wǎng)頁(yè)時(shí),它真正可怕的一面也展現(xiàn)出來(lái)了。CSS布局有兩種風(fēng)格——絕對(duì)定位和浮動(dòng)。絕對(duì)定位讓你把一個(gè)元素以像素級(jí)的精確性定位在網(wǎng)頁(yè)的任何位置——或者理論上是這樣。這種整體控制令人興奮,就如你將在下一章中所看到的,但是實(shí)際上很難實(shí)現(xiàn)。這就是大量網(wǎng)頁(yè)使用基于浮動(dòng)的布局的原因,也是本章的主題。
CSS布局如何進(jìn)行(How CSS Layout Works)
HTML的局限性迫使設(shè)計(jì)師們?nèi)ラ_(kāi)發(fā)更聰明的方式來(lái)使他們的網(wǎng)頁(yè)更美觀。過(guò)去最常用的工具是[table]標(biāo)簽,它本是用來(lái)創(chuàng)建電子數(shù)據(jù)表——比如由數(shù)據(jù)行和列組成的信息顯示表。但是設(shè)計(jì)師們卻用HTML的表格來(lái)創(chuàng)建一種用來(lái)組織網(wǎng)頁(yè)內(nèi)容的腳手架。可是由于[table]標(biāo)簽本來(lái)不是要用于布局的,因此設(shè)計(jì)師們不得不經(jīng)常以各種不尋常的方式來(lái)使用這個(gè)標(biāo)簽——比如把一個(gè)表格放在另一個(gè)表格的單元里面——僅僅為了得到他們想要的效果。這種方法的工作量很大,增加了大量額外的HTML代碼,并使得后面要修改設(shè)計(jì)很難。
在CSS出現(xiàn)之前,那就是網(wǎng)頁(yè)設(shè)計(jì)師們所擁有的一切辦法。如果你已經(jīng)習(xí)慣于使用[table]標(biāo)簽,那么當(dāng)你開(kāi)始使用CSS進(jìn)行布局時(shí),必須發(fā)展一種新的思維。首先,忘掉行和列(運(yùn)用表格時(shí)的一種重要的觀念)。沒(méi)有列跨度、行跨度和格子狀的表格結(jié)構(gòu)在CSS中是找不到的。然而,你可以把一個(gè)標(biāo)簽當(dāng)成一個(gè)表格單元。有了表格單元,標(biāo)簽就是把你要的內(nèi)容定位在網(wǎng)頁(yè)區(qū)域的一個(gè)邏輯位置。此外,如你所見(jiàn),CSS設(shè)計(jì)經(jīng)常把一個(gè)div嵌套在另一個(gè)div里面,就像你把表格嵌套在表格里面來(lái)獲得特定的效果一樣——但是,幸運(yùn)的是,CSS方法只用少得多的HTML代碼。
無(wú)論使用表格還是CSS,網(wǎng)頁(yè)布局都是把大塊的內(nèi)容放進(jìn)網(wǎng)頁(yè)的不同區(qū)域里面。有了CSS,最常用來(lái)組織內(nèi)容的元素就是標(biāo)簽。如第18頁(yè)所述,標(biāo)簽是沒(méi)有固有格式化屬性的一個(gè)HTML元素(除了瀏覽器把這個(gè)標(biāo)簽當(dāng)成前后有換行的塊之外);反之,它被用來(lái)標(biāo)識(shí)元素的一個(gè)邏輯組合或者網(wǎng)頁(yè)中的一個(gè)分區(qū)。
將代表性地把一大塊屬于一起的HTML包圍在一個(gè)里面。圖11-1中包含logo和導(dǎo)航欄的元素占據(jù)了網(wǎng)頁(yè)頂部,因此用一個(gè)標(biāo)簽把它們包圍起來(lái)很有意義。至少,你要給網(wǎng)頁(yè)的所有主要區(qū)域包含標(biāo)簽,例如橫幅、主要內(nèi)容區(qū)域、工具條、頁(yè)腳,等等。但是它也可能把一個(gè)或者更多的div包在一個(gè)里面。一種最常用的方法就是把標(biāo)簽里面的HTML包在一個(gè)里面。然后可以通過(guò)把CSS應(yīng)用到包裝,設(shè)置基礎(chǔ)的頁(yè)面屬性。你可以給網(wǎng)頁(yè)內(nèi)容設(shè)定一個(gè)整體的寬度,設(shè)置左邊距和右邊距,或者把所有網(wǎng)頁(yè)內(nèi)容在屏幕的中間居中。(在第313頁(yè)的教程中,你有機(jī)會(huì)用到一個(gè)包裝。)
一旦已經(jīng)把標(biāo)簽放在了適當(dāng)?shù)奈恢蒙希俳o每個(gè)標(biāo)簽添加一個(gè)類或者ID,變成你分別對(duì)每個(gè)定義樣式的句柄。對(duì)于只出現(xiàn)一次和形成網(wǎng)頁(yè)的基本構(gòu)建塊的網(wǎng)頁(yè)部位,設(shè)計(jì)師們通常使用一個(gè)ID。一個(gè)網(wǎng)頁(yè)橫幅區(qū)域的標(biāo)簽看起來(lái)可能像這樣。你可以對(duì)一個(gè)ID每頁(yè)只使用一次,因此當(dāng)有一個(gè)多次顯示的元素時(shí),就用一個(gè)類代替。如果你有幾個(gè)定位照片和照片說(shuō)明的div時(shí),可以創(chuàng)建一個(gè)樣式像這樣。
有了類似這些的樣式,就可以定位各種各樣的網(wǎng)頁(yè)元素了。利用CSS的float屬性,你可以定位不同的內(nèi)容塊給一張網(wǎng)頁(yè)的左邊或者右邊(或者一個(gè)包含塊比如另一個(gè)的左邊或者右邊)。
CSS hacker其實(shí)是用于處理一些不同瀏覽器之間對(duì)樣式解析差異的一種伎倆。在很多時(shí)候我們可能在IE6上看到一個(gè)頁(yè)面很規(guī)整,但是一旦在Firefox上打開(kāi)該頁(yè)面,看到的可能是“面目全非”的東西了。在w3c標(biāo)準(zhǔn)未出現(xiàn)之前,人們常采用一些小技巧來(lái)處理由于兼容性引起的頁(yè)面布局問(wèn)題。舉個(gè)簡(jiǎn)單的例子:在不同的瀏覽器默認(rèn)狀況的不同會(huì)經(jīng)常導(dǎo)致走位的現(xiàn)象,這時(shí)假如說(shuō)你遇到的是個(gè)別的情況,用" !important "," *+html "," *htm "," * "," _ "來(lái)幫助你解決這個(gè)問(wèn)題。
"!important" 是用來(lái)提高指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán)的,利用!important,我們可以針對(duì)IE6和IE7、非IE瀏覽器設(shè)置不同的樣式,如:
.bianju
{
padding:12px 0 0 20px !important;
padding:10px 0 0 20px;
......
}
這樣在IE6無(wú)法識(shí)別其優(yōu)先權(quán),應(yīng)用的樣式為"padding:10px 0 0 20px"。
*+html 與 *html 是IE特有的標(biāo)簽, firefox 不支持.而*+html 又為 IE7特有標(biāo)簽,如:
#content
{
#content { width: 100px; } /*** Firefox ***/
*html #content { width: 80px;} /*** IE6 ***/
*+html #content { width: 60px;} /*** IE7, 注意順序 ***/
}
對(duì)于IE自己也可以用它自身識(shí)別的語(yǔ)句來(lái)實(shí)現(xiàn)區(qū)分:
Only IE 所有的IE可識(shí)別
/*** 只有IE5.0可以識(shí)別 ***/
Only IE 5.0+ /*** IE5.0與IE5.5都可以識(shí)別 ***/
/*** 僅IE6可識(shí)別 ***/
Only IE 6/+ /*** IE6與IE6以下的IE5.x都可識(shí)別 ***/
Only IE 7/- /*** 僅IE7可識(shí)別 ***/
雖然CSS hacker是一種解決兼容性差異的一種方法,對(duì)于在解決少部分問(wèn)題上還是可以的。但是如果你的工程里多處用到CSS hacker的話,那是你可能會(huì)在以后付出沉重的代價(jià)。因?yàn)殡S著w3c標(biāo)準(zhǔn)的日益規(guī)范化,這些差異也在減小,如果出現(xiàn)太多CSS hacker的話可能會(huì)給日后維護(hù)造成一定的麻煩,所以在一些公司招聘Web前端開(kāi)發(fā)人員通常會(huì)有這么一條:“熟悉w3c標(biāo)準(zhǔn)”。
所以,一個(gè)優(yōu)秀的web前端開(kāi)發(fā)師應(yīng)該對(duì)w3c標(biāo)準(zhǔn)和CSS hacker有比較清楚的認(rèn)識(shí),并將標(biāo)準(zhǔn)放在第一位。