瀏覽器兼容 -- 初步了解

同一份代碼,有的瀏覽器效果正常,但有的瀏覽器效果無法達到預期,這時就是出現(xiàn)了瀏覽器不兼容的問題。
這種問題常常是因為不同產(chǎn)品的標準、實現(xiàn)方式不同,或是不同的時間出現(xiàn)的瀏覽器版本存在的bug、實現(xiàn)的功能都不同而產(chǎn)生的。

1. CSS hack

在遇到兼容問題時,針對不同瀏覽器去寫不容的CSS,讓它能在不同瀏覽器中獲得相同的效果。
CSS Hack 大致有三種表現(xiàn)形式:CSS屬性前綴法、選擇器前綴法、IE條件注釋法。
例如:

.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie6 7*/
  color: yellow\9; /*ie/edge 6-8*/
}

2. 瀏覽器兼容的思路

1). 一般考慮瀏覽器兼容問題的流程
  • 要不要做
    產(chǎn)品的角度——產(chǎn)品的受眾、受眾的瀏覽器比例、效果和基本功能哪個優(yōu)先
    成本的角度——有沒有必要實現(xiàn)

  • 做到什么程度
    讓哪些瀏覽器支持哪些效果

  • 如何做
    根據(jù)兼容需求選擇技術框架/庫(jQuery)
    根據(jù)兼容需求選擇兼容工具
    postCSS
    條件注釋、CSS Hack、JS 能力檢測來做修補

2).兩種常見的瀏覽器兼容思路:

** 漸進增強和優(yōu)雅降級:**

  • 漸進增強 —— 針對低版本瀏覽器進行構建頁面,保證基本功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
  • 優(yōu)雅降級 —— 一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。

3. 常見的5種瀏覽器兼容的寫法

  1. 條件注釋:
<!–-[if IE 7]><link rel="stylesheet" href="ie7.css" type="text/css" /><![endif]–->
  1. 屬性選擇器
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie6 7*/
  color: yellow\9; /*ie/edge 6-8*/
}
  1. 選擇器前綴法
*html //只對IE6生效
*+html //只對IE7生效
@media screen\9{...} //只對IE6 7生效
  1. 條件注釋結合類選擇器
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
  1. 利用Modernizr工具

4. 瀏覽器兼容相關常見工具/名詞:

  • 條件注釋
    在HTML源碼中被IE有條件解釋的語句,可被用來向IE提供及隱藏代碼。
    但使用了條件注釋的頁面只能在IE9中正常工作,IE10不再支持條件注釋。
項目 范例 說明
! [if !IE] 非IE
il [if lt IE 5] 小于IE5
lte [if lte IE6] 小于等于IE6
gt [if gt IE5] 大于IE5
gte [if gte IE 7] 大于等于IE7
| [if (IE6)l(IE7)] IE6或者IE7
  • IE Hack
    針對不同的IE瀏覽器編寫不同的CSS,從而使IE能夠渲染出預期效果的過程。

  • js 能力檢測
    使用JS的語法檢測瀏覽器支持的屬性,以便展示效果

  • html5shiv.js
    用來在 IE6、7、8 中模擬實現(xiàn) html5 的標簽,以實現(xiàn)對 IE 6、7、8 的兼容

  • respond.js
    在IE6、7中模擬實現(xiàn)CSS3的媒體查詢,實現(xiàn)響應式

  • css reset
    用來完全去除瀏覽器的默認樣式

  • normalize.css
    是css reset的改良版,在css reset的基礎上保護有用的瀏覽器默認樣式、為大部分HTML元素提供一般化的樣式、修復瀏覽器自身的bug并保證各瀏覽器的一致性、使用一些小技巧優(yōu)化CSS可用性、用注釋和詳細的文檔來解釋代碼。

  • Modernizr
    Modernizr是一個 JavaScript 庫,用于檢測用戶瀏覽器的 HTML5 與 CSS3 特性

  • postCSS
    PostCSS是一個JS插件轉換樣式表的工具,這些插件能夠檢驗你的CSS、支持變量和混合,轉化css3的新特性語法、行內圖片等。

5. 一般在哪個網(wǎng)站查詢屬性兼容性?

可以使用 caniuse.com來查詢CSS屬性兼容情況,使用browserhacks.com來查詢?yōu)g覽器兼容的寫法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,118評論 1 92
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號,讓不同的瀏覽器識別不同的符號(什...
    怎么昵稱閱讀 528評論 0 1
  • CSS Hack 不同的瀏覽器對某些CSS代碼解析會存在一定的差異,因此就會導致不同瀏覽器下給用戶展示的頁面效果不...
    zx9426閱讀 476評論 0 0
  • 一、如何調試 IE 瀏覽器? IE調試的一般方法(css): 使用高版本IE控制臺(對于IE7以上)IE11的開發(fā)...
    婷樓沐熙閱讀 607評論 0 6
  • 到達敦煌機場時,正值中午。 陽光很烈,卻不炙熱。 從濕熱難耐的江南而來,感覺這里的溫度更加適合我的皮膚。心里默默的...
    風兒輕輕閱讀 283評論 2 8

友情鏈接更多精彩內容