關(guān)于瀏覽器兼容的一些問題

  1. 什么是 CSS hack
    CSS hack就是我們?yōu)榱耸勾a能兼容不同版本的瀏覽器而編寫的關(guān)于瀏覽器兼容的語句。CSS hack具有三種具體的表現(xiàn)形式:選擇器前綴法症杏、CSS屬性前綴法黄痪、IE條件注釋法圾旨。前綴法就是使用一些特定瀏覽器才能識(shí)別的具有前綴的語句去編寫代碼處理兼容性的問題妙黍。如IE6能識(shí)別選擇器和屬性前帶有前綴_(下劃線)稚铣,IE6衰伯、7能識(shí)別選擇器和屬性前帶有前綴*铡羡。IE條件注釋法就是在html文件開頭加上注釋樣式的條件判斷語句,這些語句能被IE瀏覽器識(shí)別意鲸,從而選出適應(yīng)的代碼烦周。
  2. 談一談瀏覽器兼容的思路
    首先需要分析的是到底要不要處理瀏覽器兼容的問題,這需要從產(chǎn)品的角度和成本的角度去分析怎顾。產(chǎn)品的角度需要分析產(chǎn)品的受眾群读慎,受眾群使用的瀏覽器以及對于受眾群重視的是功能還是外觀;成本的角度需要分析實(shí)現(xiàn)某種兼容功能需要付出的人力和時(shí)間槐雾,如果成本太大可放棄兼容性夭委。
    其次需要分析的是哪些效果需要兼容,要兼容到瀏覽器的哪個(gè)版本募强,主要考慮的就是IE瀏覽器株灸,如一些功能需要兼容到IE的第幾個(gè)版本崇摄。
    確認(rèn)了需要兼容到IE幾之后就是根據(jù)這個(gè)兼容需求去選擇兼容的庫、框架和兼容工具慌烧,最后再使用一些條件注釋和CSShack做修補(bǔ)逐抑。
  3. 列舉5種以上瀏覽器兼容的寫法
  • 由于IE6、7無法識(shí)別:after這樣的偽類元素屹蚊,故代碼中使用前綴加*的方式對IE6厕氨、7使用建立BFC,從而清除浮動(dòng)淑翼。
.clearfix:after{
  content: '';
  display: block;
  clear: both;
}
.clearfix{
  *zoom: 1; /* 僅對ie67有效 */
}
  • 由于IE6腐巢、7無法識(shí)別display:inline-block這樣的語句,故前綴加的代碼設(shè)置了一個(gè)類似display:inline-block的效果玄括,而前綴加的語句只有IE6冯丙、7能識(shí)別,從而解決兼容的問題
.target{
  display: inline-block;
  *display: inline;
  *zoom: 1;
}
  • 下面為IE條件注釋語句遭京,意思為如果IE版本低于IE9胃惜,則加載下面兩個(gè)JS文件,這兩個(gè)JS文件可以解決html5標(biāo)簽和媒體查詢不兼容的問題哪雕。
<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->
  • 下面也是IE條件判斷語句船殉,意思是如果版本為IE7,則加載ie7.css樣式表斯嚎。
<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->
  • 下面也是IE條件判斷語句利虫,通過判斷IE的版本號(hào)給html標(biāo)簽加上各種類名,這些類名可在html文件中使用堡僻,從而創(chuàng)建專門適用于某種IE版本的代碼糠惫,從而解決兼容的問題。
<!DOCTYPE html>
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8 ]> <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
  1. 以下工具/名詞是做什么的
  • 條件注釋
    條件注釋是一些在IE中具有條件語句的功能钉疫,而在別的瀏覽器中會(huì)被當(dāng)成注釋的語句硼讽,如<!–-[if IE 7]><link rel="stylesheet" href="ie7.css" type="text/css" /><![endif]–->,此語句就是條件注釋牲阁。
  • IE Hack
    IE hack就是一些只能被IE識(shí)別的語句固阁,如選擇器或者CSS屬性前加上*或者_(dá),這種語句只能被IE的某些瀏覽器識(shí)別城菊,這種寫法就是IE hack备燃。
  • js 能力檢測
    js能力檢測指的是,js對于瀏覽器兼容問題上采用的判斷方式是是否具有這個(gè)方法或?qū)傩粤杌#绻哂袆t兼容赚爵,沒有就是不兼容。這種能力檢測的方式較為簡單,不需要繁雜的版本確認(rèn)冀膝。
  • html5shiv.js
    這個(gè)JS文件使用于那些不支持html5的瀏覽器,作用是將html5標(biāo)簽轉(zhuǎn)化為那些老版本瀏覽器也能識(shí)別的標(biāo)簽霎挟,從而實(shí)現(xiàn)兼容窝剖。
  • respond.js
    這個(gè)JS文件使用于那些不支持媒體查詢的瀏覽器,作用是將媒體查詢語句轉(zhuǎn)化為那些老版本瀏覽器也能識(shí)別的語句酥夭,從而實(shí)現(xiàn)媒體查詢在老版本瀏覽器上的兼容赐纱。
  • css reset
    css reset指的是將瀏覽器中對某種元素的默認(rèn)樣式通通重置,從而消除那些由于瀏覽器默認(rèn)樣式不一致而出現(xiàn)的兼容性問題熬北。
  • normalize.css
    normalize.css是一個(gè)css文件疙描,加載它可以得到不同的瀏覽器對于默認(rèn)樣式的相同規(guī)范,不同于css reset的是normalize.css沒有將瀏覽器的默認(rèn)樣式通通重置讶隐,而是將默認(rèn)樣式分類起胰,沒有用的清零,有用的采用統(tǒng)一的值巫延,從而消除那些由于瀏覽器默認(rèn)樣式不一致而出現(xiàn)的兼容性問題效五。
  • Modernizr
    Modernizr.js是一個(gè)js文件,它采用了JS能力檢測的思想炉峰,作用是對當(dāng)前瀏覽器逐一判斷某種功能能不能實(shí)現(xiàn)畏妖,能就在html標(biāo)簽加上class="xxx",不能就在html上加上class="no-xxx"疼阔,從而使html標(biāo)簽具有很多類名戒劫,前端工程師編寫代碼時(shí)可以使用這些類寫出不同的代碼分支,從而解決兼容性問題婆廊。
  • postCSS
    postCSS是一個(gè)平臺(tái)迅细,在這個(gè)平臺(tái)上可以安裝各種各樣強(qiáng)大的插件,插件可以幫你把普通的CSS轉(zhuǎn)換為兼容XX版本的CSS否彩,從而實(shí)現(xiàn)解決兼容性的問題疯攒。
    如:PostCSS插件Autoprefixer為CSS補(bǔ)全瀏覽器前綴
    PostCSS插件CSS Grace讓CSS兼容舊版IE
  1. 一般在哪個(gè)網(wǎng)站查詢屬性兼容性?
    caniuse.com 這個(gè)網(wǎng)站可以查詢到屬性在各個(gè)瀏覽器版本的兼容性列荔。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敬尺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贴浙,更是在濱河造成了極大的恐慌砂吞,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崎溃,死亡現(xiàn)場離奇詭異蜻直,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門概而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呼巷,“玉大人,你說我怎么就攤上這事赎瑰⊥鹾罚” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵餐曼,是天一觀的道長压储。 經(jīng)常有香客問我,道長源譬,這世上最難降的妖魔是什么集惋? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踩娘,結(jié)果婚禮上刮刑,老公的妹妹穿的比我還像新娘。我一直安慰自己霸饲,他們只是感情好为朋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厚脉,像睡著了一般习寸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傻工,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天霞溪,我揣著相機(jī)與錄音,去河邊找鬼中捆。 笑死鸯匹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泄伪。 我是一名探鬼主播殴蓬,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蟋滴!你這毒婦竟也來了染厅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對情侶失蹤津函,失蹤者是張志新(化名)和其女友劉穎肖粮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尔苦,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩馆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年行施,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魂那。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛾号,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涯雅,到底是詐尸還是另有隱情须教,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布斩芭,位于F島的核電站,受9級(jí)特大地震影響乐疆,放射性物質(zhì)發(fā)生泄漏划乖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一挤土、第九天 我趴在偏房一處隱蔽的房頂上張望琴庵。 院中可真熱鬧,春花似錦仰美、人聲如沸迷殿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庆寺。三九已至,卻和暖如春诉字,著一層夾襖步出監(jiān)牢的瞬間懦尝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工壤圃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陵霉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓伍绳,卻偏偏與公主長得像踊挠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子冲杀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 什么是CSS hack CSS hack由于不同廠商的瀏覽器效床,比如Internet Explorer,Safari...
    尾巴尾巴尾巴閱讀 775評(píng)論 0 0
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號(hào),讓不同的瀏覽器識(shí)別不同的符號(hào)(什...
    怎么昵稱閱讀 383評(píng)論 0 1
  • 什么是 CSS hack漠趁? CSS hank由于不同廠商的瀏覽器扁凛,比如IE,Safari,Chrome等闯传,或者同一...
    饑人谷_tonya閱讀 641評(píng)論 0 0
  • 什么是 CSS hack 由于不同廠商的瀏覽器谨朝,比如Internet Explorer,Safari,Mozill...
    阿魯提爾閱讀 261評(píng)論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案卤妒? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92