瀏覽器兼容 -- 初步了解

同一份代碼,有的瀏覽器效果正常恕刘,但有的瀏覽器效果無法達(dá)到預(yù)期,這時(shí)就是出現(xiàn)了瀏覽器不兼容的問題抒倚。
這種問題常常是因?yàn)椴煌a(chǎn)品的標(biāo)準(zhǔn)褐着、實(shí)現(xiàn)方式不同,或是不同的時(shí)間出現(xiàn)的瀏覽器版本存在的bug托呕、實(shí)現(xiàn)的功能都不同而產(chǎn)生的含蓉。

1. CSS hack

在遇到兼容問題時(shí),針對(duì)不同瀏覽器去寫不容的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)品的受眾、受眾的瀏覽器比例任洞、效果和基本功能哪個(gè)優(yōu)先
    成本的角度——有沒有必要實(shí)現(xiàn)

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

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

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

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

  • 漸進(jìn)增強(qiáng) —— 針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面侈咕,保證基本功能公罕,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)耀销。
  • 優(yōu)雅降級(jí) —— 一開始就構(gòu)建完整的功能楼眷,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

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 //只對(duì)IE6生效
*+html //只對(duì)IE7生效
@media screen\9{...} //只對(duì)IE6 7生效
  1. 條件注釋結(jié)合類選擇器
<!--[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. 瀏覽器兼容相關(guān)常見工具/名詞:

  • 條件注釋
    在HTML源碼中被IE有條件解釋的語句熊尉,可被用來向IE提供及隱藏代碼罐柳。
    但使用了條件注釋的頁面只能在IE9中正常工作,IE10不再支持條件注釋狰住。
項(xiàng)目 范例 說明
! [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
    針對(duì)不同的IE瀏覽器編寫不同的CSS张吉,從而使IE能夠渲染出預(yù)期效果的過程。

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

  • html5shiv.js
    用來在 IE6肮蛹、7、8 中模擬實(shí)現(xiàn) html5 的標(biāo)簽创南,以實(shí)現(xiàn)對(duì) IE 6伦忠、7、8 的兼容

  • respond.js
    在IE6稿辙、7中模擬實(shí)現(xiàn)CSS3的媒體查詢昆码,實(shí)現(xiàn)響應(yīng)式

  • css reset
    用來完全去除瀏覽器的默認(rèn)樣式

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

  • Modernizr
    Modernizr是一個(gè) JavaScript 庫淘钟,用于檢測(cè)用戶瀏覽器的 HTML5 與 CSS3 特性

  • postCSS
    PostCSS是一個(gè)JS插件轉(zhuǎn)換樣式表的工具,這些插件能夠檢驗(yàn)?zāi)愕腃SS亦镶、支持變量和混合日月,轉(zhuǎn)化css3的新特性語法、行內(nèi)圖片等缤骨。

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市燎斩,隨后出現(xiàn)的幾起案子虱歪,更是在濱河造成了極大的恐慌,老刑警劉巖栅表,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋鄙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怪瓶,警方通過查閱死者的電腦和手機(jī)萧落,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洗贰,“玉大人找岖,你說我怎么就攤上這事×沧蹋” “怎么了许布?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绎晃。 經(jīng)常有香客問我蜜唾,道長,這世上最難降的妖魔是什么庶艾? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任袁余,我火速辦了婚禮,結(jié)果婚禮上落竹,老公的妹妹穿的比我還像新娘泌霍。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布朱转。 她就那樣靜靜地躺著蟹地,像睡著了一般。 火紅的嫁衣襯著肌膚如雪藤为。 梳的紋絲不亂的頭發(fā)上怪与,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音缅疟,去河邊找鬼分别。 笑死,一個(gè)胖子當(dāng)著我的面吹牛存淫,可吹牛的內(nèi)容都是我干的耘斩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼桅咆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼括授!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岩饼,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤荚虚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后籍茧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體版述,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年寞冯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渴析。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡简十,死狀恐怖檬某,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情螟蝙,我是刑警寧澤恢恼,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站胰默,受9級(jí)特大地震影響场斑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牵署,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一漏隐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奴迅,春花似錦青责、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扁耐。三九已至,卻和暖如春产阱,著一層夾襖步出監(jiān)牢的瞬間婉称,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國打工构蹬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留王暗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓庄敛,卻偏偏與公主長得像俗壹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藻烤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案策肝? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,762評(píng)論 1 92
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號(hào),讓不同的瀏覽器識(shí)別不同的符號(hào)(什...
    怎么昵稱閱讀 391評(píng)論 0 1
  • CSS Hack 不同的瀏覽器對(duì)某些CSS代碼解析會(huì)存在一定的差異隐绵,因此就會(huì)導(dǎo)致不同瀏覽器下給用戶展示的頁面效果不...
    zx9426閱讀 392評(píng)論 0 0
  • 一、如何調(diào)試 IE 瀏覽器拙毫? IE調(diào)試的一般方法(css): 使用高版本IE控制臺(tái)(對(duì)于IE7以上)IE11的開發(fā)...
    婷樓沐熙閱讀 557評(píng)論 0 6
  • 到達(dá)敦煌機(jī)場(chǎng)時(shí)蛀醉,正值中午。 陽光很烈衅码,卻不炙熱拯刁。 從濕熱難耐的江南而來,感覺這里的溫度更加適合我的皮膚逝段。心里默默的...
    風(fēng)兒輕輕閱讀 251評(píng)論 2 8