CSS hack

因爲不一樣廠商的流覽器或某瀏覽器的不一樣版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),對CSS的支持、解析不同,致使在不一樣瀏覽器的環境中呈現出不一致的頁面展示效果。這時,咱們爲了得到統一的頁面效果,就須要針對不一樣的瀏覽器或不一樣版本寫特定的CSS樣式,咱們把這個針對不一樣的瀏覽器/不一樣版本寫相應的CSS code的過程,叫作CSS hack!css

 

CSS hack的原理

因爲不一樣的瀏覽器和瀏覽器各版本對CSS的支持及解析結果不同,以及CSS優先級對瀏覽器展示效果的影響,咱們能夠據此針對不一樣的瀏覽器情景來應用不一樣的CSShtml

 

CSS hack分類

CSS Hack大體有3種表現形式,CSS屬性前綴法、選擇器前綴法以及IE條件註釋法(即HTML頭部引用if IEHack,實際項目中CSS Hack大部分是針對IE瀏覽器不一樣版本之間的表現差別而引入的。css3

  • 屬性前綴法(即類內部Hack):例如 IE6能識別下劃線"_"和星號" * "IE7能識別星號" * ",但不能識別下劃線"_"IE6~IE10都認識"\9",但firefox前述三個都不能認識。
  • 選擇器前綴法(即選擇器Hack):例如 IE6能識別*html .class{}IE7能識別*+html .class{}或者*:first-child+html .class{}
  • IE條件註釋法(HTML條件註釋Hack):針對全部IE(注:IE10+已經再也不支持條件註釋)<!--[if IE]>IE瀏覽器顯示的內容 <![endif]-->,針對IE6及如下版本: <!--[if lt IE 6]>只在IE6-顯示的內容 <![endif]-->。這類Hack不只對CSS生效,對寫在判斷語句裏面的全部代碼都會生效。

  

CSS hack書寫順序,通常是將適用範圍廣、被識別能力強的CSS定義在前面。瀏覽器

 

CSS hack利弊

通常狀況下,咱們儘可能避免使用CSS hack,可是有些狀況爲了顧及用戶體驗實現向下兼容,不得已才使用hack。好比因爲IE8及如下版本不支持CSS3,而咱們的項目頁面使用了大量CSS3新屬性在IE9/Firefox/Chrome下正常渲染,這種狀況下若是不使用css3piehtc或條件註釋等方法時,可能就得讓IE8-的專屬hack出馬了。使用hack雖然對頁面表現的一致性有好處,但過多的濫用會形成html文檔混亂不堪,增長管理和維護的負擔。相信只要你們一塊兒努力,少用、慎用hack,將來必定會促使瀏覽器廠商的標準愈來愈趨於統一,順利過渡到標準瀏覽器的主流時代。拋棄那些陳舊的IE hack,必將減輕咱們編碼的複雜度,少作無用功。編碼

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息