瀏覽器兼容

做前端的小伙伴無論在學習還是工作中助析,應(yīng)該還是或多或少會遇到點IE兼容問題昙沦,當然我們巴不得IE的份額越來越低..( ̄▽ ̄)
下面是我收集的一些常見方法哈雏,以作為自己學習的筆記嘁傀。

image.png

什么是瀏覽器兼容問題

同一份代碼兴蒸,有的瀏覽器效果正常,有的不正常

不正常的原因是什么细办?(不支持? bug橙凳?)
如何讓它展示正常?(條件注釋? 單獨Hack笑撞?)

當然在做兼容之前岛啸,我們還是需要從實際項目出發(fā)考慮。


首先介紹兩個重要概念茴肥,漸進增強和優(yōu)雅降級

漸進增強(progressive enhancement): 針對低版本瀏覽器進行構(gòu)建頁面值戳,保證最基本的功能,然后再針對高級瀏覽器進行效果炉爆、交互等改進和追加功能達到更好的用戶體驗
優(yōu)雅降級 (graceful degradation): 一開始就構(gòu)建完整的功能堕虹,然后再針對低版本瀏覽器進行兼容卧晓。

stackoverflow-漸進增強和優(yōu)雅降級的區(qū)別

那我們實際上用到哪一種,還是從實際(láo bǎn)要求出發(fā)

image.png

要不要做

產(chǎn)品的角度(產(chǎn)品的受眾赴捞、受眾的瀏覽器比例逼裆、效果優(yōu)先還是基本功能優(yōu)先)
成本的角度 (有無必要做某件事)

做到什么程度

讓哪些瀏覽器支持哪些效果


具體如何做

1. 根據(jù)兼容需求選擇技術(shù)框架/庫(jquery)
  • Bootstrap (>=ie8)
  • jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
  • Vue (>= ie9)
  • ...
2. 條件注釋法

條件注釋 (conditional comment) 是于HTML源碼中被IE有條件解釋的語句。條件注釋可被用來向IE提供及隱藏代碼赦政。
還有個重點Jび睢!恢着!╮(╯﹏╰)╭IE10不再支持條件注釋

image.png

用法舉例

    <!--[if IE 6]>
    <p>You are using Internet Explorer 6.</p>
    <![endif]-->
    <!--[if !IE]><!-->
    <script>alert(1);</script>
    <!--<![endif]-->
    <!--[if IE 8]>
    <link href="ie8only.css" rel="stylesheet">
    <![endif]-->
3.CSS hack

由于不同廠商的瀏覽器桐愉,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本掰派,如IE6和IE7从诲,對CSS的解析認識不完全一樣,因此會導(dǎo)致生成的頁面效果不一樣靡羡,得不到我們所需要的頁面效果系洛。
這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能在不同的瀏覽器中也能得到我們想要的頁面效果略步。

CSS Hack大致有3種表現(xiàn)形式描扯,CSS屬性前綴法
選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack趟薄,實際項目中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現(xiàn)差異而引入的绽诚。

  • 屬性前綴法(即類內(nèi)部Hack):
    例如
    IE6能識別下劃線"_"和星號" * ",
    IE7能識別星號" * "杭煎,但不能識別下劃線"_"憔购,
    IE6~IE10都認識"\9",但firefox前述三個都不能認識
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}
  • 選擇器前綴法(即選擇器Hack)
<style>
.test{ width:90px;}               /*IE 6,IE 7,IE 8*/
*html .test{ width:80px;}         /*only for IE 6*/
*+html .test{ width:70px;}        /*only for IE 7*/
</style>
  • IE條件注釋法(即HTML條件注釋Hack)

實際上面以及解釋過了

<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->

常見屬性的兼容情況
image.png

一些兼容處理例子
  • 浮動
.clearfix:after{
  content: '';
  display: block;
  clear: both;
}
.clearfix{
  *zoom: 1; /* 僅對ie67有效 */
}
  • inline-block
.target{
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

常用工具介紹

html5shiv.js
這個是用來支持html5標簽的

官方github解釋:The HTML5 Shiv enables use of HTML5 sectioning elements in legacy Internet Explorer and provides basic HTML5 styling for Internet Explorer 6-9, Safari 4.x (and iPhone 3.x), and Firefox 3.x.
詳細請戳上面

respond.js
這個是用來支持css3媒體查詢的

A fast & lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)

css reset岔帽、

css reset指清除某些默認樣式玫鸟,達到不同瀏覽器的統(tǒng)一效果,具體見上面介紹

normalize.css
流行的css reset實現(xiàn)方法

A modern alternative to CSS resets

Modernizr
Modernizr是一套JavaScript 犀勒,用來偵測瀏覽器是否支持HTML5CSS3等規(guī)格屎飘。如果瀏覽器不支持,Modernizr會使用其他的解決方法來進行模擬贾费。

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

postCSS
這個用來后編譯你的css钦购,讓你的css適配不同的客戶端

PostCSS is a tool for transforming styles with JS plugins. These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more.


常用網(wǎng)站

瀏覽器市場份額

caniuse.com 查CSS屬性兼容

browserhacks 查 Hack 的寫法

以上~~~~

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市褂萧,隨后出現(xiàn)的幾起案子押桃,更是在濱河造成了極大的恐慌,老刑警劉巖导犹,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唱凯,死亡現(xiàn)場離奇詭異羡忘,居然都是意外死亡,警方通過查閱死者的電腦和手機磕昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門卷雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人票从,你說我怎么就攤上這事漫雕。” “怎么了峰鄙?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵浸间,是天一觀的道長。 經(jīng)常有香客問我吟榴,道長魁蒜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任煤墙,我火速辦了婚禮梅惯,結(jié)果婚禮上宪拥,老公的妹妹穿的比我還像新娘仿野。我一直安慰自己,他們只是感情好她君,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布脚作。 她就那樣靜靜地躺著,像睡著了一般缔刹。 火紅的嫁衣襯著肌膚如雪球涛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天校镐,我揣著相機與錄音亿扁,去河邊找鬼。 笑死鸟廓,一個胖子當著我的面吹牛从祝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播引谜,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼牍陌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了员咽?” 一聲冷哼從身側(cè)響起毒涧,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贝室,沒想到半個月后契讲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仿吞,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年怀泊,在試婚紗的時候發(fā)現(xiàn)自己被綠了茫藏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡霹琼,死狀恐怖务傲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枣申,我是刑警寧澤售葡,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站忠藤,受9級特大地震影響挟伙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜模孩,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一尖阔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榨咐,春花似錦介却、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至数焊,卻和暖如春永淌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背佩耳。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工遂蛀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人干厚。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓李滴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親萍诱。 傳聞我的和親對象是個殘疾皇子悬嗓,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一、如何調(diào)試 IE 瀏覽器裕坊? 在IE7以上的版本中可以通過按快捷鍵F12調(diào)出開發(fā)人員調(diào)試框包竹,如下圖IE7以上調(diào)試工...
    dengpan閱讀 543評論 0 2
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號,讓不同的瀏覽器識別不同的符號(什...
    怎么昵稱閱讀 383評論 0 1
  • 一、問答部分 1. 如何調(diào)試 IE 瀏覽器 IE7及以上版本有調(diào)試臺周瞎,可以按F12啟動苗缩。Paste_Image.p...
    _hello__world_閱讀 457評論 0 1
  • 一、如何調(diào)試 IE 瀏覽器 IE7以上版本自帶的開發(fā)者工具声诸,IE6可以用border的方法酱讶;例:IE11的開發(fā)者工...
    __Qiao閱讀 1,121評論 2 17
  • 我做了一個夢,夢到了你跟那個女生 我走到你面前先給了你一巴掌 你左臉瞬間就紅了彼乌,但我知道你沒有生氣 那天晚上我也給...
    的笙閱讀 151評論 0 0