CSS中的hack是指在不同瀏覽器之間使用不同的CSS代碼,以達(dá)到相同效果的技術(shù)。這種技術(shù)在前端開發(fā)中是不可避免的,因為不同的瀏覽器對CSS的支持程度不同,如Chrome、Firefox、Safari、Opera和IE等。HTML、CSS、JavaScript這三門技術(shù)的學(xué)習(xí)就在于兼容各種瀏覽器,從而盡可能使網(wǎng)頁呈現(xiàn)效果一致。接下來,我們就來看看坊間流傳的三種CSS Hack方式。
第一種方式是條件注釋,也是最為常用的一種方式。條件注釋是IE獨有的一種語法,其他瀏覽器無法識別。其主要思想是根據(jù)IE的版本情況,選擇執(zhí)行不同的CSS代碼。如下所示:
<!--[if IE 6]> <link rel="stylesheet" type="text/css" href="ie6.css" /> <![endif]-->
上述代碼表示只有IE6瀏覽器才會執(zhí)行ie6.css文件中的CSS代碼。其他瀏覽器,如Chrome、Firefox等則可以忽略這一段代碼。通過這種方式,可以針對不同版本的IE瀏覽器進(jìn)行不同的優(yōu)化。
第二種方式是后代選擇器法,其主要用于IE6和IE7中。代碼如下:
* html body {font-size:20px}
上述代碼意思是當(dāng)使用IE6和IE7瀏覽器時,body元素的字體大小將會是20px。而其他瀏覽器則會忽略后代選擇器。此外,在IE6及以下版本中,可以使用\9來實現(xiàn)部分支持。比如:
div {background-color:#f00\9;}
上述代碼中的\9表示只有IE6及以下版本會識別此樣式,其他瀏覽器則不會。
第三種方式是屬性前綴法,即為不同瀏覽器添加前綴標(biāo)識符,識別相應(yīng)的CSS代碼,比較常用的是針對瀏覽器的漸變(Gradient)。如下所示:
/* for Webkit browsers */ background: -webkit-linear-gradient(#ffffff, #000000); /* for Mozilla Firefox */ background: -moz-linear-gradient(#ffffff, #000000); /* for Internet Explorer */ filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#ffffff', EndColorStr='#000000');
上述代碼表示,針對不同的瀏覽器,使用對應(yīng)的屬性前綴來處理漸變效果的CSS代碼,從而實現(xiàn)在不同瀏覽器中的一致性。