瀏覽器兼容

什么是CSS hack


所謂css hack是指在css樣式中加上一些特殊的符號,讓不同的瀏覽器能夠識別不同的特殊符號,用來達到應用不同CSS樣式的目的。簡單來說,就是不同瀏覽器在解讀CSS時候,進行對網頁內容顯示差別的處理,由于各個瀏覽器的內核不相同,因此造成誤差難以避免。

瀏覽器兼容的思路


對于瀏覽器兼容的思路,首先考慮的是,要不要做?從兩個方面進行考慮,一個是產品的角度進行考慮,對于一個產品,要考慮其受眾,受眾的瀏覽器比例,是功能優先還是效果優先;
其次考慮的是要做到什么程度,讓哪些瀏覽器支持,要實現什么效果。
再者考慮的是如何做?從中要根據技術的需求選擇技術框架/庫(jquery),其中框架如下
Bootstrap (>=ie8)
jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
Vue (>= ie9)
根據兼容需求選擇兼容工具。然后對條件注釋,css hack,js的能力檢測做一些修補。
對于瀏覽器兼容還包括平穩退化和漸進增強。
平穩退化是指一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。
漸進增強是指針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。

列舉五種以上瀏覽器兼容的寫法


  • 條件注釋
<!--[if IE 7]><link rel="stylesheet" href="ie7.css" type="text/css"/><![endif]-->
  • css hack 方法,這個方法又具體細分為3個方法 分別為

屬性前綴法:ie6能識別下劃線"_"和" ",ie7能識別" ",但是不能識別下劃線。IE6~IE10都認識"\9",但firefox前述三個都不能識別。

常見的屬性兼容情況:
inline-blcok:>=ie8
min-width:>=ie8
:before:after:>=ie8
div:hover>=ie8,
background-size: >=ie9
圓角:>=ie9
陰影:>=ie9
動畫漸變:>=ie10

選擇器前綴法
IE條件注釋法結合選擇器整體優化


  • 利用兼容開發工具,例如Modernizr:運行的時候它會在html元素上添加一批css的class名稱,這些class名稱標記當前瀏覽器支持哪些特性和不支持哪些特性,支持的特性就直接顯示該特性的名稱作為一個class,不支持的特性的class是no-特性名稱。我們就可以直接使用modenizr在元素里生成的class的名稱,在css文件里定義相應的屬性以便支持當前的瀏覽器。

以下名詞意義以及作用

  • 條件注釋:條件注釋是一種安全區分IE瀏覽器版本的語法,且被認為是取代 IE css hack,條件注釋 (conditional comment) 是于HTML源碼中被IE有條件解釋的語句。條件注釋可被用來向IE提供及隱藏代碼。
  • IE hack: 針對IE瀏覽器編寫不同的CSS的讓IE能夠正常渲染的過程。
  • js 檢測能力:瀏覽器的能力檢測目標不是檢測特定的瀏覽器,而是檢測瀏覽器的能力。這樣,只需要檢測瀏覽器是否支持特定的能力,就可以給出特定的解決方案。這一部分檢測是解決瀏覽器兼容問題的主要檢測。
  • html5shiv.js:用于解決IE9以下版本瀏覽器對HTML5新增標簽不識別,并導致CSS不起作用的問題。
  • respond.js:在做響應式網頁的時候一些瀏覽器器不支持媒體查詢等css3新特性,使用respond.js來兼容。
  • css reset:重置瀏覽器的默認樣式,也就是重新定義標簽的樣式。
  • normalize css:不像css reset一樣重置所有樣式,而是保留有用的樣式。而且標準化的樣式適用于更廣的元素。
  • Modernizr:Modernizr幫助我們檢測瀏覽器是否實現了某個feature,如果實現了那么開發人員就可以充分利用這個feature做一些工作,反之沒有實現開發人員也好提供一個fallback。所以,我們要明白的是Modernizr只是幫我們檢測feature是否被支持,它并不能夠給瀏覽器添加那些本來不支持的feature。
  • postCSS:它可以被理解為一個平臺,可以讓一些插件在上面跑,它提供了一個解析器,可以將CSS解析成抽象語法樹,通過PostCSS這個平臺,我們能夠開發一些插件,來處理CSS。熱門插件如autoprefixer,它可以幫我們處理兼容問題,只需正常寫CSS,autoprefixer可以幫我的自動生成兼容性代碼

一般在哪個網站查詢屬性兼容性?

http://caniuse.com/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、前言 做前端開發,必然少不了瀏覽器,然而不同的廠商有著各自版本的瀏覽器,不同的瀏覽器對css的理解和解析不一樣...
    青鳴閱讀 517評論 0 2
  • 1、什么是 CSS hack 不同廠商的瀏覽器(比如Internet Explorer,Safari,Mozill...
    zh_yang閱讀 376評論 0 0
  • 1.什么是 CSS hack 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozi...
    zhaonu閱讀 406評論 0 0
  • 本文版權歸饑人谷和本人所有 1.什么是 CSS hackCSS hack由于不同廠商的瀏覽器,比如Internet...
    饑人谷_xxxxx閱讀 313評論 0 0
  • CSS Hack 不同的瀏覽器對某些CSS代碼解析會存在一定的差異,因此就會導致不同瀏覽器下給用戶展示的頁面效果不...
    zx9426閱讀 408評論 0 0