最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CSS hack 介紹及速查對(duì)照表

  發(fā)布時(shí)間:2011-09-05 22:49:20   作者:佚名   我要評(píng)論
學(xué)習(xí)CSS,除了基礎(chǔ),還有必學(xué)的一課,就是CSS hack,很多書(shū)籍上都有涉及。當(dāng)時(shí)覺(jué)得這個(gè)東西很神秘,可以針對(duì)某個(gè)或某些瀏覽器寫(xiě)些特別的 CSS 樣式而不影響其他,而且用起來(lái)也很方便。
雖然如此,但是,很少有人知道,它到底是什么東西,使用CSS hack好不好,以及它是怎樣實(shí)現(xiàn)的?
下面,就談一下我對(duì)CSS hack的認(rèn)識(shí)。希望能幫助大家正確的認(rèn)識(shí)CSS hack。
介紹之前,請(qǐng)先記住一句話:你今天用CSS hack解決兼容性問(wèn)題,明天瀏覽器就可能讓你那解決問(wèn)題的CSS hack變成另一個(gè)兼容性問(wèn)題。
CSS hack簡(jiǎn)介
這,還要從W3C CSS2.1的標(biāo)準(zhǔn)說(shuō)起。
W3C CSS2.1的標(biāo)準(zhǔn)的第四章,講了CSS的基本語(yǔ)法,數(shù)據(jù),以及值,還講到了如何去處理不合理的值及聲明等。可以參考我分享的另外兩個(gè)帖子:【分享】說(shuō)說(shuō)標(biāo)準(zhǔn) --CSS標(biāo)準(zhǔn)中的值,【分享】說(shuō)說(shuō)標(biāo)準(zhǔn)--我 的眼里只有你--CSS的錯(cuò)誤解析規(guī)則。
W3C CSS2.1 標(biāo)準(zhǔn)也規(guī)定了瀏覽器應(yīng)當(dāng)支持的特性屬性或值。
雖然如此,W3C也不可能強(qiáng)制瀏覽器廠商必須遵循標(biāo)準(zhǔn)。因此就出現(xiàn)了各大廠商對(duì)標(biāo)準(zhǔn)的實(shí)現(xiàn)不盡相同的現(xiàn)象。由于不同的瀏覽器,比如IE6、 IE7、 IE8、 Firefox等,對(duì)CSS解析的標(biāo)準(zhǔn)不同,因此對(duì)于相同的 CSS代碼,可能會(huì)生成不同的頁(yè)面效果,從而無(wú)法在所有瀏覽器中得到我們想要的效果。這時(shí),我們就需要針對(duì)不同的瀏覽器去寫(xiě)不同的CSS代碼,讓它能夠在所有瀏覽器中獲得相同的效果。這個(gè)過(guò)程,就是CSS hack。也就是寫(xiě)出只有個(gè)別瀏覽器或某些瀏覽器識(shí)別的CSS代碼。
CSS hack是因?yàn)楝F(xiàn)有瀏覽器對(duì)標(biāo)準(zhǔn)的解析不同,為了兼容各瀏覽器,所采用的一種補(bǔ)救方法。
CSS hack是一種類(lèi)似作弊的手段,以欺騙瀏覽器的方式達(dá)到兼容的目的,是用瀏覽器的兼容性差異來(lái)解決瀏覽器的兼容性問(wèn)題。
因此,在設(shè)計(jì)之初,寫(xiě)CSS hack需要遵循以下三條原則:
⃟有效: 能夠通過(guò) Web 標(biāo)準(zhǔn)的驗(yàn)證
⃟只針對(duì)太古老的/不再開(kāi)發(fā)的/已被拋棄的瀏覽器, 而不是目前的主流瀏覽器
⃟代碼要丑陋。讓人記住這是一個(gè)不得已而為之的 Hack, 時(shí)刻記住要想辦法去掉它。
現(xiàn)在很多hacks已經(jīng)拋棄了最初的原則,而濫用hack會(huì)導(dǎo)致瀏覽器更新之后產(chǎn)生更多的兼容性問(wèn)題。
因此,并不推薦使用CSS hack來(lái)解決兼容性問(wèn)題。
CSS hack的實(shí)現(xiàn)方式
我總結(jié)了一下,實(shí)現(xiàn)CSS hack大概有以下幾種方式:
1. 利用瀏覽器對(duì)相同代碼的解析和支持的不同實(shí)現(xiàn)的hack
不同瀏覽器對(duì)相同的CSS代碼的支持情況可能不同。尤其是對(duì)錯(cuò)誤的寫(xiě)法。
例如,

CSS code

復(fù)制代碼
代碼如下:

#test{
_width:80px;
}

在IE7及以上版本的瀏覽器中會(huì)被當(dāng)作錯(cuò)誤特性而舍棄,但是在IE6中可以被正常的解析。這時(shí)候,可以把_width當(dāng)作hack,專(zhuān)門(mén)針對(duì) IE6來(lái)設(shè)置元素的寬度。
2. 以Firefox或Webkit特有的擴(kuò)展樣式實(shí)現(xiàn)的hack
以-moz或-webkit開(kāi)頭的擴(kuò)展樣式,是瀏覽器對(duì)CSS標(biāo)準(zhǔn)的擴(kuò)展。這些特性只在相應(yīng)的瀏覽器里才可以被正常的解析。 因此可以被當(dāng)作CSS hack來(lái)使用。
以-moz開(kāi)頭的Firefox特有擴(kuò)展樣式
Mozilla瀏覽器支持的一些擴(kuò)展是以-moz開(kāi)頭的。這些擴(kuò)展包括了一些功能,例如圓形邊界等。這種CSS只適用于Mozilla瀏覽器。
比如,-moz-opacity是在Firefox2.0版本出現(xiàn)的特性,用來(lái)實(shí)現(xiàn)元素的透明,但Firefox3.0以后的版本中不再支持,而是直接支持標(biāo)準(zhǔn)中的opacity特性。而其他瀏覽器不支持-moz-opacity。所以,可以使用-moz-opacity來(lái)針對(duì)Firefox2.0設(shè)置元素的透明度。
關(guān)于Firefox擴(kuò)展樣式的詳細(xì)信息,見(jiàn)Mozilla CSS Extensions。
以-webkit開(kāi)頭的Webkit瀏覽器特有擴(kuò)展樣式
與以-moz開(kāi)頭的Firefox特有擴(kuò)展樣式相同,以-webkit開(kāi)頭的樣式是 Webkit瀏覽器特有的,只有Webkit瀏覽器可以解析。
比如,在Webkit瀏覽器中可以用 -webkit-border-radius實(shí)現(xiàn)圓角。
3. 利用IE對(duì)標(biāo)準(zhǔn)的支持缺陷寫(xiě)的CSS hack
這個(gè)類(lèi)別以中的hack以IE對(duì)標(biāo)準(zhǔn)的支持缺陷為基礎(chǔ),可以讓CSS代碼針對(duì)IE6或IE7以外的瀏覽器生效。
例如,!important只有IE7及以上版本的IE及其他瀏覽器支持,所以,可以用!important來(lái)針對(duì)IE6以外的瀏覽器寫(xiě) CSS代碼;再如,head:first-child+body selector,:first-child不被IE6支持,所以可以用來(lái)針對(duì)IE6以外的瀏覽器編寫(xiě)CSS代碼。
此處不在一一列舉。
當(dāng)然,有的觀點(diǎn)認(rèn)為應(yīng)用CSS2.1標(biāo)準(zhǔn),不屬于CSS hack。見(jiàn)Tantek's Thoughts,Using A CSS2 Feature Is NOT a Hack。
4. 以IE特有的條件注釋為基礎(chǔ)的hack
IE瀏覽器中特有的條件注釋也經(jīng)常被用作 hack,可以針對(duì)特定版本的IE寫(xiě)CSS代碼。
例如,測(cè)試用例:
HTML code

復(fù)制代碼
代碼如下:

<!--[if IE 8]>
<style type="text/css">
#test {
color: red;
}
</style>
<![endif]-->
<h1 id="test">TEXT</h1>

以上代碼中的 "TEXT",只在IE8中才會(huì)是紅色。
CSS hack匯總表

Windows系統(tǒng)下各瀏覽器常用CSS hack匯總表,如下:
說(shuō)明:
1. 此匯總表中測(cè)試瀏覽器的版本為
o IE6
o IE7
o IE8
o Firefox 3.6.6
o Safari 5.0
o Chrome 6.0.458.1 dev
o Opera 10.60
2. 其中,多數(shù)CSS hack是在selector{property:value;}基礎(chǔ)上更改的。selector代表CSS選擇器,property代表CSS特性,value代表特性的值。
3. FF代表Firefox,Ch代表Chorme,Sa代表Safari,Op代表Opera
4. Q代表Quirks Mode,S代表Standards Mode。
5. Hack Type列的數(shù)字,指的是上面CSS hack的實(shí)現(xiàn)方式中的列表號(hào)。1是指“利用瀏覽器對(duì)相同代碼的解析和支持的不同實(shí)現(xiàn)的hack”,2是指以Firefox或Webkit特有的擴(kuò)展樣式實(shí)現(xiàn)的hack。

其中 *+html selector 的測(cè)試用例:

HTML code

復(fù)制代碼
代碼如下:

<style type="text/css">
*+html #test {
color: red;
}
</style>
<h1 id="test">TEXT</h1>

其他測(cè)試用例可在此基礎(chǔ)上修改。
切記,遵守CSS hack的三條原則。CSS hack是沒(méi)有辦法的時(shí)候才使用的解決兼容性問(wèn)題的招術(shù),是用兼容性問(wèn)題去解決兼容性問(wèn)題,無(wú)異于飲鴆止渴。切莫一有兼容性問(wèn)題就使用。
另外,時(shí)刻記得改掉用CSS hack修補(bǔ)的問(wèn)題。
補(bǔ)充一點(diǎn)兒好玩兒的東西,Yahoo也有一種實(shí)現(xiàn)hack的方式,比較特殊。Yahoo會(huì)利用服務(wù)器去判斷打開(kāi)其頁(yè)面的瀏覽器的類(lèi)別,然后,把信息加到HTML標(biāo)簽上,比如我使用Firefox打開(kāi)Yahoo的首頁(yè),查看它的HTML標(biāo)簽,發(fā)現(xiàn):
HTML code
<html lang="en-US" class="y-fp-bg y-fp-pg-grad ua-ff ua-win ua-ff3_6 bkt701">……</html>

注意其中的ua-ff ua-win ua-ff3_6,含有瀏覽器類(lèi)別和版本的信息。
然后,在設(shè)置特定瀏覽器的樣式時(shí),比如,我希望在Firefox里讓所有的div中的文字都是紅色,可以這樣設(shè)置:
CSS code

復(fù)制代碼
代碼如下:

.ua-ff div{
color : red;
}

最后再附兩條:

清除浮動(dòng)
select:after {content:"."; display:block; height:0; clear:both; visibility:hidden;}
在Firefox中,當(dāng)子級(jí)都為浮動(dòng)時(shí),那么父級(jí)的高度就無(wú)法完全的包住整個(gè)子級(jí),那么這時(shí)用這個(gè)清除浮動(dòng)的HACK來(lái)對(duì)父級(jí)做一次定義,那么就可以解決這個(gè)問(wèn)題。
截字省略號(hào)
select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; }
這個(gè)是在越出長(zhǎng)度后會(huì)自行的截掉多出部分的文字,并以省略號(hào)結(jié)尾,很好的一個(gè)技術(shù)。只是目前Firefox并不支持。

相關(guān)文章

  • 淺談原生頁(yè)面兼容IE9問(wèn)題的解決方案

    這篇文章主要介紹了淺談原生頁(yè)面兼容IE9問(wèn)題的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起
    2020-12-16
  • 新版chrome瀏覽器設(shè)置允許跨域的實(shí)現(xiàn)

    這篇文章主要介紹了新版chrome瀏覽器設(shè)置允許跨域的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起
    2020-11-30
  • css hack之\9和\0就可能對(duì)hack IE11\IE9\IE8無(wú)效

    每次設(shè)計(jì)一張網(wǎng)頁(yè)或一個(gè)表單,都被各種瀏覽器的兼容問(wèn)題傷透腦筋,尤其是IE家族。在做兼容性設(shè)計(jì)時(shí),我們往往會(huì)使用各種瀏覽器能識(shí)別的獨(dú)特語(yǔ)法進(jìn)行hack,從而達(dá)到各種瀏覽
    2020-03-20
  • css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼

    這篇文章主要介紹了css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼,需要的朋友可以參考下
    2020-03-20
  • 解決CSS瀏覽器兼容性問(wèn)題的4種方案

    這篇文章主要介紹了解決CSS瀏覽器兼容性問(wèn)題的4種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)
    2020-02-28
  • 常見(jiàn)的瀏覽器兼容性問(wèn)題(小結(jié))

    這篇文章主要介紹了常見(jiàn)的瀏覽器兼容性問(wèn)題(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)
    2020-02-20
  • border-radius IE8兼容處理的方法

    這篇文章主要介紹了border-radius IE8兼容處理的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)
    2020-02-12
  • 淺談?dòng)龅降膸讉€(gè)瀏覽器兼容性問(wèn)題

    這篇文章主要介紹了淺談?dòng)龅降膸讉€(gè)瀏覽器兼容性問(wèn)題,詳細(xì)的介紹了幾種我遇到的問(wèn)題和解決方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-26
  • base64圖片在各種瀏覽器的兼容性處理

    這篇文章主要介紹了base64圖片在各種瀏覽器的兼容性處理的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-14
  • 對(duì)常見(jiàn)的css屬性進(jìn)行瀏覽器兼容性總結(jié)(推薦)

    這篇文章主要介紹了對(duì)常見(jiàn)的css屬性進(jìn)行瀏覽器兼容性總結(jié)(推薦)的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-20

最新評(píng)論

绵阳市| 新野县| 抚远县| 克山县| 垫江县| 慈溪市| 赤水市| 永昌县| 搜索| 永川市| 广元市| 金沙县| 天水市| 景宁| 营山县| 丰城市| 承德市| 吉首市| 太仓市| 南丹县| 新疆| 上犹县| 周宁县| 阿拉善右旗| 绵阳市| 宝清县| 平远县| 柯坪县| 阿尔山市| 夹江县| 广南县| 宽城| 哈尔滨市| 会理县| 赫章县| 称多县| 中卫市| 嫩江县| 秦皇岛市| 开封市| 弋阳县|