瀏覽器兼容 hack

虛擬機(jī)virtualbox

1脂矫、談一談瀏覽器兼容的思路

確定要不要做

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

做到什么程度

  • 綜合考量需要做到什么瀏覽器什么版本的兼容缕减,比如兼容到IE7 還是IE6

如何做

  1. 根據(jù)兼容需求選擇技術(shù)框架/庫(kù)(jquery)
  2. 根據(jù)兼容需求選擇兼容工具(html5shiv.jsrespond.js芒珠、css reset桥狡、normalize.cssModernizr)
  3. postCSS
  4. 條件注釋、CSS Hack裹芝、js 能力檢測(cè)做一些修補(bǔ)

漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)

  1. 漸進(jìn)增強(qiáng)(progressive enhancement): 針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面部逮,保證最基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果嫂易、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)
  2. 優(yōu)雅降級(jí) (graceful degradation): 一開始就構(gòu)建完整的功能兄朋,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

2怜械、什么是 CSS hack

由于不同廠商的瀏覽器颅和,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本缕允,如IE6和IE7峡扩,對(duì)CSS的解析認(rèn)識(shí)不完全一樣,因此會(huì)導(dǎo)致生成的頁(yè)面效果不一樣障本,得不到我們所需要的頁(yè)面效果教届。
這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫不同的CSS,讓它能在不同的瀏覽器中也能得到我們想要的頁(yè)面效果驾霜。

CSS Hack大致有3種表現(xiàn)形式:
  1. 屬性前綴法(即類內(nèi)部Hack):
    例如 IE6能識(shí)別下劃線"_"和星號(hào)" * "巍佑;
    IE7能識(shí)別星號(hào)" * ",但不能識(shí)別下劃線"*寄悯;
    IE6~IE10都認(rèn)識(shí)"\9";
    但firefox前述三個(gè)都不能認(rèn)識(shí)堕义。
.box{
        color: red;  /*所有瀏覽器都支持*/
        color:red !important;   ?* Firefox猜旬、IE7支持 *?
        _color: blue; /*ie6支持*/
       *color: pink; /*ie6、7支持*/
        color: yellow\9;  /*ie/edge 6-8*/
}
  1. 選擇器前綴法(即選擇器Hack)
    *html *前綴只對(duì)ie6生效
    *+html *+前綴只對(duì)ie7生效

  2. IE條件注釋法(即HTML條件注釋Hack倦卖,IE10+已經(jīng)不再支持條件注釋):
    針對(duì)所有IE:
    洒擦;
    針對(duì)IE6及以下版本:
    ``;
    這類Hack不僅對(duì)CSS生效怕膛,對(duì)寫在判斷語句里面的所有代碼都會(huì)生效

3熟嫩、列舉5種以上瀏覽器兼容的寫法

處理兼容問題的手段:

  1. 合適的框架
Bootstrap (>=ie8)
jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
Vue (>= ie9)
  1. 條件注釋
<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![endif]-->
  1. CSS hack
.box{
        color: red;  /*所有瀏覽器都支持*/
        color:red !important;   ?* Firefox、IE7支持 *?
        _color: blue; /*ie6支持*/
       *color: pink; /*ie6褐捻、7支持*/
        color: yellow\9;  /*ie/edge 6-8*/
}
  1. 使用兼容工具
  2. 常見兼容處理范例
.clearfix:after{
  content: '';
  display: block;
  clear: both;
}
.clearfix{
  *zoom: 1; /* 僅對(duì)ie67有效 */
}

4掸茅、以下工具/名詞是做什么的

  • 條件注釋(conditional comment)
    是于HTML源碼中被IE有條件解釋的語句。條件注釋可被用來向IE提供及隱藏代碼柠逞。
    IE10不再支持條件注釋昧狮。
項(xiàng)目 范例 說明
[if !IE] 非IE
lt [if lt IE 5.5] 小于IE 5.5
lte [if lte IE 6] 小于等于IE6
gt [if gt IE 5] 大于 IE5
gte [if gte IE 7] 大于等于IE7
  • IE Hack
    針對(duì)IE瀏覽器編寫不同的CSS的讓IE能夠正常渲染的過程

  • js 能力檢測(cè)
    檢測(cè)瀏覽器是否支持某種特定的能力板壮,然后給出特定的解決方案逗鸣。

  • html5shiv.js參考資料
    用于解決IE9以下版本瀏覽器對(duì)HTML5新增標(biāo)簽不識(shí)別,并導(dǎo)致CSS不起作用的問題。

  • respond.js
    讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢撒璧。

  • css reset參考資料
    早期的CSS Reset的作用就是清除所有瀏覽器默認(rèn)樣式透葛,這樣更易于保持各瀏覽器渲染的一致性。暴力清零帶來的問題:
    1.*{ margin:0; padding:0; }會(huì)帶來性能問題
    2.使用通配符存在隱性問題
    3.過渡的標(biāo)簽重置等于畫蛇添足
    4.過渡的標(biāo)簽重置導(dǎo)致語言元素失效

  • normalize.css
    是一個(gè)可定制的 CSS 文件卿樱,使瀏覽器呈現(xiàn)的所有元素僚害,更一致和符合現(xiàn)代標(biāo)準(zhǔn);是在現(xiàn)代瀏覽器環(huán)境下對(duì)于CSS reset的替代殿如。
    該項(xiàng)目依賴于研究瀏覽器默認(rèn)元素風(fēng)格之間的差異贡珊,精確定位需要重置的樣式。相比于傳統(tǒng)的CSS Reset涉馁,Normalize.css是一種現(xiàn)代的门岔、為HTML5準(zhǔn)備的優(yōu)質(zhì)替代方案。Normalize.css現(xiàn)在已經(jīng)被用于Twitter Bootstrap烤送、HTML5 Boilerplate寒随、GOV.UK、Rdio帮坚、CSS Tricks 以及許許多多其他框架妻往、工具和網(wǎng)站上。
    作用:
    1.保護(hù)有用的瀏覽器默認(rèn)樣式而不是完全去掉它們
    2.為大部分HTML元素提供一般化的樣式
    修復(fù)瀏覽器自身的bug并保證各瀏覽器的一致性
    3.用一些小技巧優(yōu)化CSS可用性
    4.用注釋和詳細(xì)的文檔來解釋代碼

  • Modernizr參考資料
    Modernizr.js既能給老版本瀏覽器打補(bǔ)丁试和,又能保證新瀏覽器漸進(jìn)增強(qiáng)的用戶體驗(yàn)讯泣。

  • postCSS
    PostCSS 是一個(gè)使用 JS 插件來轉(zhuǎn)換 CSS 的工具。這些插件可以支持使用變量阅悍,混入(mixin)好渠,轉(zhuǎn)換未來的 CSS 語法,內(nèi)聯(lián)圖片等操作节视。

5拳锚、一般在哪個(gè)網(wǎng)站查詢屬性兼容性?

瀏覽器市場(chǎng)份額查詢
CSS屬性兼容查詢
Hack 的寫法

6寻行、常見屬性的兼容情況

屬性 兼容
div:hover >=ie7
inline-block >=ie8
min-width/min-height >=ie8
:before,:after >=ie8
background-size >=ie9
border-radius圓角 >= ie9
box-shadow陰影 >= ie9
transform動(dòng)畫/漸變 >= ie10
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霍掺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拌蜘,更是在濱河造成了極大的恐慌杆烁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件简卧,死亡現(xiàn)場(chǎng)離奇詭異连躏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贞滨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門入热,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拍棕,“玉大人,你說我怎么就攤上這事勺良〈虏ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵尚困,是天一觀的道長(zhǎng)蠢箩。 經(jīng)常有香客問我,道長(zhǎng)事甜,這世上最難降的妖魔是什么谬泌? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮逻谦,結(jié)果婚禮上掌实,老公的妹妹穿的比我還像新娘。我一直安慰自己邦马,他們只是感情好贱鼻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滋将,像睡著了一般邻悬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上随闽,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天父丰,我揣著相機(jī)與錄音,去河邊找鬼掘宪。 笑死础米,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的添诉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼医寿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼栏赴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起靖秩,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤须眷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后沟突,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體花颗,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年惠拭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扩劝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸论。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖棒呛,靈堂內(nèi)的尸體忽然破棺而出聂示,到底是詐尸還是另有隱情,我是刑警寧澤簇秒,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布鱼喉,位于F島的核電站,受9級(jí)特大地震影響趋观,放射性物質(zhì)發(fā)生泄漏扛禽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一皱坛、第九天 我趴在偏房一處隱蔽的房頂上張望编曼。 院中可真熱鬧,春花似錦麸恍、人聲如沸灵巧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刻肄。三九已至,卻和暖如春融欧,著一層夾襖步出監(jiān)牢的瞬間敏弃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工噪馏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留麦到,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓欠肾,卻偏偏與公主長(zhǎng)得像瓶颠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刺桃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 做前端多年粹淋,雖然不是經(jīng)常需要hack,但是我們經(jīng)常會(huì)遇到各瀏覽器表現(xiàn)不一致的情況瑟慈√乙疲基于此,某些情況我們會(huì)極不情愿的...
    大女表哥閱讀 1,092評(píng)論 0 9
  • 一葛碧、如何調(diào)試 IE 瀏覽器借杰? 在IE7以上的版本中可以通過按快捷鍵F12調(diào)出開發(fā)人員調(diào)試框,如下圖IE7以上調(diào)試工...
    dengpan閱讀 548評(píng)論 0 2
  • 一进泼、問答部分 1. 如何調(diào)試 IE 瀏覽器 IE7及以上版本有調(diào)試臺(tái)蔗衡,可以按F12啟動(dòng)纤虽。Paste_Image.p...
    _hello__world_閱讀 464評(píng)論 0 1
  • 一、如何調(diào)試 IE 瀏覽器 IE7以上版本自帶的開發(fā)者工具粘都,IE6可以用border的方法廓推;例:IE11的開發(fā)者工...
    __Qiao閱讀 1,127評(píng)論 2 17
  • 梗源于陳粒的七樓 女歌手和大學(xué)生 據(jù)說陪著歌聽感覺更棒 七樓# 麗江是不缺酒吧的,自然也不缺各種模樣的主唱翩隧。但我卻...
    沈白祁閱讀 552評(píng)論 0 2