瀏覽器兼容

1.css hack

由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等粟关,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7环戈,對(duì)CSS的解析認(rèn)識(shí)不完全一樣,因此會(huì)導(dǎo)致生成的頁(yè)面效果不一樣院塞,得不到我們所需要的頁(yè)面效果遮晚。這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫(xiě)不同的CSS迫悠,讓它能在不同的瀏覽器中也能得到我們想要的頁(yè)面效果。

css hack的三種寫(xiě)法

  • 屬性前綴法(即類(lèi)內(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; /*ie6*/
  *color:red;  /*ie6,7*/
  color:red\9;  /*ie/edge 6-8*/
}
  • 選擇器前綴法(即選擇器Hack)
  • E條件注釋法(即HTML條件注釋Hack):針對(duì)所有IE(注:IE10+已經(jīng)不再支持條件注釋): ,針對(duì)IE6及以下版本:秒梳。這類(lèi)Hack不僅對(duì)CSS生效法绵,對(duì)寫(xiě)在判斷語(yǔ)句里面的所有代碼都會(huì)生效
<!--[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" > 
<![endif]-->

2.瀏覽器的兼容思路

  • 首先考慮這個(gè)問(wèn)題要不要處理

    1. 產(chǎn)品的角度酪碘。要考慮產(chǎn)品的受眾是哪些人和市場(chǎng),這些受眾多使用的瀏覽器是哪種兴垦,比例如何徙赢,是效果優(yōu)先還是功能優(yōu)先探越。
  1. 成本的角度。要從成本的角度考慮是都必要做兼容钦幔。
  • 其次考慮要做到什么程度的兼容

    就是考慮讓那些瀏覽器做到支持哪些效果枕屉。

  • 最后考慮該怎么去做

    1. 根據(jù)兼容需求選擇技術(shù)框架/庫(kù)(jquery等)
    2. 根據(jù)兼容需求選擇兼容工具(html5shiv.js鲤氢、respond.js、css reset卷玉、normalize.css哥倔、Modernizr)
    3. postCSS:目標(biāo)是通過(guò)自定義插件和工具這樣的生態(tài)系統(tǒng)來(lái)改造CSS揍庄。與Sass和Less這些預(yù)編譯器相同的原則,PostCSS把擴(kuò)展的語(yǔ)法和特性轉(zhuǎn)換成現(xiàn)代的瀏覽器友好的CSS
    4. 條件注釋蚂子、CSS Hack沃测、js 能力檢測(cè)做一些修補(bǔ)

3. 常見(jiàn)瀏覽器兼容寫(xiě)法

  1. 條件注釋
<!--[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" > 
<![endif]-->
記住單詞名字就懂什么意思了
<!--[if lt IE 7]> lt:less than  小于
<!--[if gt IE 7]> gt:greater than  大于
<!--[if gte IE 7]>   <!--[if lte IE 7]>   e:equal  等于  就是大于等于   小于等于
  1. css前綴
.box{
  color:red;
  _color: red; /*ie6*/
  *color:red;  /*ie6,7*/
  color:red\9;  /*ie/edge 6-8*/
}
div{
transform:rotate(7deg);
-ms-transform:rotate(7deg);     /* IE 9 */
-moz-transform:rotate(7deg);    /* Firefox */
-webkit-transform:rotate(7deg); /* Safari 和 Chrome */
-o-transform:rotate(7deg);  /* Opera */
}
  1. 選擇器前綴
@media screen and (-webkit-min-device-pixel-ratio:0){ /*為chrome單獨(dú)設(shè)置樣式的類(lèi)實(shí)現(xiàn)案例*/
.closeImg{
right:300px;height:100px;  
width:200px;  
background-color:Olive;  
} 
}         
  1. Modernizr工具
<html class=" js no-flexbox canvas canvastext no-webgl no-touch geolocation 
         postmessage no-websqldatabase no-indexeddb hashchange no-history 
   draganddrop no-websockets rgba hsla multiplebgs backgroundsize 
   no-borderimage borderradius boxshadow no-textshadow opacity 
   no-cssanimations no-csscolumns no-cssgradients no-cssreflections
   csstransforms no-csstransforms3d no-csstransitions fontface 
   generatedcontent video audio localstorage sessionstorage 
   no-webworkers no-applicationcache svg inlinesvg smil svgclippaths">
  1. 條件注釋結(jié)合選擇器
<!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]-->

4. 常見(jiàn)兼容相關(guān)術(shù)語(yǔ)名詞

  1. 條件注釋蒂破。條件注釋 (conditional comment) 是于HTML源碼中被IE有條件解釋的語(yǔ)句。條件注釋可被用來(lái)向IE提供及隱藏代碼附迷。
  2. ie hack惧互。針對(duì)IE瀏覽器編寫(xiě)不同的CSS的讓IE能夠正常渲染的過(guò)程。
  3. js 能力檢測(cè)喊儡。能力檢測(cè)的目標(biāo)不是識(shí)別特定的瀏覽器,而是識(shí)別瀏覽器的能力稻据。采用這種方式不必顧及特定的瀏覽器如何如何,只要確定瀏覽器支持特定的能力捻悯,就可以給出解決方案匆赃。
  4. html5shiv.js今缚。 用于解決IE9以下版本瀏覽器對(duì)HTML5新增標(biāo)簽不識(shí)別,并導(dǎo)致CSS不起作用的問(wèn)題姓言。
  5. respond.js埠居。讓IE6-8支持CSS3 Media Query事期。
  6. css reset纸颜。 是將所有的瀏覽器的自帶樣式重置掉,這樣更易于保持各瀏覽器渲染的一致性胁孙。
  7. normalize.css唠倦。保護(hù)有用的瀏覽器默認(rèn)樣式而不是完全去掉它們涮较。為大部分HTML元素提供標(biāo)準(zhǔn)化樣式。修復(fù)瀏覽器自身的bug并保證各瀏覽器的一致性狂票。用一些小技巧優(yōu)化CSS可用性候齿。用注釋和詳細(xì)的文檔來(lái)來(lái)解釋代碼闺属。
  8. Modernizr。幫助探測(cè)瀏覽器是否支持某種新特性掂器,甚至可以加載額外的script腳本亚皂。使你可以方便地為各種情況編寫(xiě) JavaScript 和 CSS国瓮,無(wú)論瀏覽器是否支持這些特性灭必。這是處理漸進(jìn)增強(qiáng)的完美方案。Modernizr 會(huì)在頁(yè)面加載后立即檢測(cè)特性禁漓;然后創(chuàng)建一個(gè)包含檢測(cè)結(jié)果的 JavaScript 對(duì)象,同時(shí)在 html 元素加入方便你調(diào)整 CSS 的 class 名璃饱。
  9. postCSS与斤。它可以被理解為一個(gè)平臺(tái)荚恶,可以讓一些插件在上面跑撩穿,它提供了一個(gè)解析器谒撼,可以將CSS解析成抽象語(yǔ)法樹(shù),通過(guò)PostCSS這個(gè)平臺(tái)廓潜,我們能夠開(kāi)發(fā)一些插件抵皱,來(lái)處理CSS辩蛋。熱門(mén)插件如autoprefixer,它可以幫我們處理兼容問(wèn)題悼院,只需正常寫(xiě)CSS伤为,autoprefixer可以幫我的自動(dòng)生成兼容性代碼.

5.查詢屬性兼容性的網(wǎng)站

caniuse網(wǎng)站 https://caniuse.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末据途,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颖医,更是在濱河造成了極大的恐慌位衩,老刑警劉巖熔萧,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異佛致,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)晌杰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)跷睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肋演,“玉大人烂琴,你說(shuō)我怎么就攤上這事⊥上纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵层玲,是天一觀的道長(zhǎng)号醉。 經(jīng)常有香客問(wèn)我辛块,道長(zhǎng),這世上最難降的妖魔是什么润绵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮尘盼,結(jié)果婚禮上憨愉,老公的妹妹穿的比我還像新娘。我一直安慰自己配紫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布午阵。 她就那樣靜靜地躺著,像睡著了一般趟庄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戚啥,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音锉试,去河邊找鬼。 笑死呆盖,一個(gè)胖子當(dāng)著我的面吹牛拖云,可吹牛的內(nèi)容都是我干的应又。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼株扛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼尤筐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起盆繁,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掀淘,失蹤者是張志新(化名)和其女友劉穎油昂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冕碟,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拦惋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年鸣哀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片我衬。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挠羔,靈堂內(nèi)的尸體忽然破棺而出井仰,到底是詐尸還是另有隱情,我是刑警寧澤俱恶,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站范舀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锭环。R本人自食惡果不足惜聪全,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一辅辩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玫锋,春花似錦蛾茉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)节沦。三九已至窜管,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稚机,已是汗流浹背幕帆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工赖条, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纬乍。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓碱茁,卻偏偏與公主長(zhǎng)得像仿贬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茧泪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 一蜓氨、問(wèn)答部分 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以上版本自帶的開(kāi)發(fā)者工具港令,IE6可以用border的方法锈颗;例:IE11的開(kāi)發(fā)者工...
    __Qiao閱讀 1,127評(píng)論 2 17
  • 什么是 CSS hack 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozill...
    阿魯提爾閱讀 264評(píng)論 0 2
  • 一击吱、如何調(diào)試 IE 瀏覽器淋淀? 在IE7以上的版本中可以通過(guò)按快捷鍵F12調(diào)出開(kāi)發(fā)人員調(diào)試框姨拥,如下圖IE7以上調(diào)試工...
    dengpan閱讀 548評(píng)論 0 2
  • 先說(shuō)說(shuō)使用for each 的list遍歷渠鸽,假設(shè)list是字符串集合 假如需求來(lái)了叫乌,要求刪除集合中特定的字符串,你...
    浮云騎士_閱讀 342評(píng)論 0 0