瀏覽器的兼容性

所謂的瀏覽器兼容性問題没咙,是指因為不同的瀏覽器對同一段代碼有不同的解析舞骆,造成頁面顯示效果不統(tǒng)一的情況蚜枢。在大多數(shù)情況下妇蛀,我們的需求是,無論用戶用什么瀏覽器來查看我們的網(wǎng)站或者登陸我們的系統(tǒng)凌摄,都應該是統(tǒng)一的顯示效果羡蛾。所以瀏覽器的兼容性問題是前端開發(fā)人員經常會碰到和必須要解決的問題。

總結之后將經常遇到的瀏覽器的兼容性問題分為以下九種锨亏,其它不常見的關于JS痴怨、CSS的兼容性小問題太多,就不再一一羅列器予,有興趣可以去網(wǎng)上找找浪藻,有很多,如果實在沒法解決的情況下可以用CSS hack解決乾翔,如果有其他方法解決兼容性爱葵,盡可能減少對CSS Hack的使用。Hack有風險,使用需謹慎萌丈。

常見的兼容性問題及解決辦法

一赞哗、不同瀏覽器的標簽默認的外補丁和內補丁不同

問題表現(xiàn):隨便寫幾個標簽,不加樣式控制的情況下辆雾,各自的margin 和padding差異較大肪笋。

解決方案:CSS里 ? ?*{margin:0;padding:0;}

備注:這個是最常見的也是最易解決的一個瀏覽器兼容性問題,幾乎所有的CSS文件開頭都會用通配符*來設置各個標簽的內外補丁是0乾颁。

二涂乌、塊屬性標簽float后艺栈,又有橫向的margin情況下英岭,在IE6顯示margin比設置的大

問題表現(xiàn):IE6后面的一塊被頂?shù)较乱恍?/p>

解決方案:在float的標簽樣式控制中加入display:inline;轉化為行內屬性

備注:橫向浮動的div布局,使用上margin進行邊界設置時湿右,必然會碰到此問題

三诅妹、設置較小高度標簽(一般小于10px),在IE6毅人、IE7吭狡,遨游中高度超出設置高度值

問題表現(xiàn):IE6、7和遨游里這個標簽的高度不受控制丈莺,超出自己設置的高度

解決方案:給超出高度的標簽設置overflow:hidden;或者設置行高line-height小于你設置的高度

備注:一般出現(xiàn)在設置小圓角背景的標簽里划煮。出現(xiàn)該問題原因是IE8之前的瀏覽器都會給標簽一個最小默認行高的高度,即使標簽是空內容缔俄,標簽的高度還是會有默認行高弛秋。

四、行內屬性標簽俐载,設置display:block后采用float布局蟹略,又有橫向的margin情況,IE6間距bug

問題表現(xiàn):IE6的間距比超過設置的間距

解決方案:在display:block;后面加入display:inline;display:table;

備注:行內屬性標簽遏佣,為了設置寬度挖炬,需要設置為display:block;(表單元素除外)在用float布局且有橫向margin后,在IE6下状婶,就具有了塊屬性float后的橫向margin的bug意敛。由于設置為display:inline,高度失效膛虫,所有在后面補上display:table空闲。

五、圖片默認有間距

問題表現(xiàn):幾個img標簽放在一塊走敌,有些瀏覽器會有默認的間距碴倾,有通配符也不起作用

解決方案:使用float屬性為img布局

備注:img標簽是行內屬性標簽,只要不超出容器高度,img會排在一行里跌榔,使用float是比較好的選擇

六异雁、標簽最低高度設置min-height不兼容

問題表現(xiàn):min-height本身就是一個不兼容的css屬性,所以設置min-height時不能兼容所有瀏覽器

解決方案:如果設置一個標簽最小高度為200px僧须,需要進行設置 {min-height:200px; height:auto !important;

height: 200px; overflow:visible;}

備注:b/s系統(tǒng)前端時纲刀,當內容小于一個值時,容器的高度保持該值担平,當內容大于該值時示绊,高度自適應且不出現(xiàn)滾動條。

七暂论、光標手形

問題表現(xiàn):firefox不支持hand面褐,但ie支持pointer

解決方案:統(tǒng)一使用cursor:pointer;

八、字體大小定義不同

問題表現(xiàn):對字體大小small定義不同取胎,F(xiàn)irefox為13px展哭,而IE為16px,差別比較大

解決方法:使用指定的字體大小如14px或者使用em

九闻蛀、IE6 3px bug

問題表現(xiàn):左側div浮動left匪傍,右邊DIV可以接著橫向排列,形成典型一列固定觉痛,第二列自適應役衡,IE6出現(xiàn)之間3px間隙

解決方法:對左側left的盒子補上_margin-right: -3px;

十、其它方面

如果要減少瀏覽器兼容性問題的出現(xiàn)薪棒,可以分兩種情況:

第一種是企業(yè)內部系統(tǒng):通常會采用一些現(xiàn)成的UI技術手蝎,如ext、flex或其它UI框架完成盗尸。這些技術自己已經有相當好的瀏覽器兼容了柑船。

第二種是互聯(lián)網(wǎng)的:通常也會采用一些JS框架作輔助,如jQuery等作對dom泼各、事件鞍时、ajax的兼容,頁面上使用hack技術扣蜻,如IE的*開始的選擇器和條件注釋作兼容逆巍。

css hack

先舉一個小例子,簡要說明一下CSS hack是干啥的莽使。

比如要分辨IE6和firefox兩種瀏覽器锐极,可以這樣寫:

div{

background:green;/*forfirefox*/

*background:red;/*forIE6*/(bothIE6&&IE7)

}

我在IE6中看到是紅色的,在firefox中看到是綠色的芳肌。

解釋一下:

上面的css在firefox中灵再,它是認識不了后面的那個帶星號的東西是什么的肋层,于是將它過濾掉,不予理睬翎迁,解析得到的結果是:div{background:green},于是理所當然這個div的背景是綠色的栋猖。

在IE6中呢,它兩個background都能識別出來汪榔,它解析得到的結果是:div{background:green;*background:red;},于是根據(jù)優(yōu)先級別蒲拉,處在后面的red的優(yōu)先級高,于是當然這個div的背景顏色就是紅色的了痴腌。

css hack就是通過這種方式來對瀏覽器進行兼容性處理雌团。也就是通過在CSS樣式中加入一些特殊的符號,讓不同的瀏覽器識別不同的符號(什么樣的瀏覽器識別什么樣的符號是有標準的士聪,CSS hack就是讓你記住這個標準)锦援,以達到應用不同的CSS樣式的目的。因此我們就可以根據(jù)不同的瀏覽器去寫不同的CSS戚嗅,讓它能夠同時兼容不同的瀏覽器雨涛,能在不同的瀏覽器中也能得到我們想要的頁面效果枢舶。

針對不同瀏覽器的網(wǎng)站設計代碼總結如下

1懦胞、針對I E 系列瀏覽器的網(wǎng)站設計代碼

針對 IE 6 的專屬 CSS Hack 網(wǎng)站設計代碼 ? ? ? ?#id{ ?_display: block; ?} 也就是在網(wǎng)站設計CSS屬性前加一個小劃線就好。

針對 IE 7 的專屬 CSS Hack 網(wǎng)站設計代碼 ? ? ? ?#id{ *display: block; } 即在網(wǎng)站設計CSS屬性前加上一個星號凉泄。

針對 IE 8 的專屬 CSS Hack 網(wǎng)站設計代碼 ? ? ? ?#id{ margin-top: 10px /9; /*IE8*/} 如上所示躏尉,解決辦法為在網(wǎng)站設計CSS屬性后分號前加上空格與斜線并加入一個數(shù)字9即可 ?。

2后众、針對火狐的CSS Hack 網(wǎng)站設計代碼

想要解決火狐的兼容性只要將CSS代碼寫入到 @-moz-document url-prefix(){ } 里面就行了 , 例如 ?@-moz-document url-prefix() ?{ ? ?#id{ display: block; } ?} ?胀糜。

3、針對 Safari 的CSS Hack 網(wǎng)站設計代碼

Safari是蘋果中新的瀏覽器蒂誉,解決兼容性的做法是加上@media screen and (-webkit-min-device-pixel-ratio:0)前綴教藻。例如@media screen and (-webkit-min-device-pixel-ratio:0) ?{ ? ?#id { display: block; } ?} ?兼容性做法和火狐相近。

4右锨、針對 Opera 的CSS Hack 網(wǎng)站設計代碼

Opera解決兼容性的做法也是加上選擇器前綴括堤,例如 @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { ?head~body #id { display: block; } ? } ? 這個世界上必然不會存在絕對完美的事物,因此運用以上方法讓我們的網(wǎng)站設計更好的與各種瀏覽器兼容的時候其實已經違反了網(wǎng)站制作的W3C標準绍移。

參考網(wǎng)頁:http://bbs.jointforce.com/topic/20742?utm_source=tuicool&utm_medium=referral

作者:櫻桃小丸子兒

鏈接:http://www.reibang.com/p/f971aae86f4d

來源:簡書

著作權歸作者所有悄窃。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處蹂窖。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末轧抗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瞬测,更是在濱河造成了極大的恐慌横媚,老刑警劉巖纠炮,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灯蝴,居然都是意外死亡抗碰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門绽乔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弧蝇,“玉大人,你說我怎么就攤上這事折砸】戳疲” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵睦授,是天一觀的道長两芳。 經常有香客問我,道長去枷,這世上最難降的妖魔是什么怖辆? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮删顶,結果婚禮上竖螃,老公的妹妹穿的比我還像新娘。我一直安慰自己逗余,他們只是感情好特咆,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著录粱,像睡著了一般腻格。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啥繁,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天菜职,我揣著相機與錄音,去河邊找鬼旗闽。 笑死酬核,一個胖子當著我的面吹牛,可吹牛的內容都是我干的宪睹。 我是一名探鬼主播愁茁,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亭病!你這毒婦竟也來了鹅很?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罪帖,失蹤者是張志新(化名)和其女友劉穎促煮,沒想到半個月后邮屁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡菠齿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年佑吝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绳匀。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芋忿,死狀恐怖,靈堂內的尸體忽然破棺而出疾棵,到底是詐尸還是另有隱情戈钢,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布是尔,位于F島的核電站殉了,受9級特大地震影響,放射性物質發(fā)生泄漏拟枚。R本人自食惡果不足惜薪铜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恩溅。 院中可真熱鬧隔箍,春花似錦、人聲如沸暴匠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽每窖。三九已至,卻和暖如春弦悉,著一層夾襖步出監(jiān)牢的瞬間窒典,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工稽莉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瀑志,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓污秆,卻偏偏與公主長得像劈猪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子良拼,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案战得? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,753評論 1 92
  • 所謂的瀏覽器兼容性問題,是指因為不同的瀏覽器對同一段代碼有不同的解析庸推,造成頁面顯示效果不統(tǒng)一的情況常侦。在大多數(shù)情況下...
    櫻桃小丸子兒閱讀 34,628評論 5 100
  • 所謂的瀏覽器兼容性問題浇冰,是指因為不同的瀏覽器對同一段代碼有不同的解析,造成頁面顯示效果不統(tǒng)一的情況聋亡。在大多數(shù)情況下...
    gtt21閱讀 543評論 0 3
  • 1.什么是 CSS hack 不同廠商的瀏覽器肘习,例如Internet explorer、Safari坡倔、Mozill...
    我七閱讀 239評論 0 0
  • 前言 瀏覽器的兼容性問題是個很龐大復雜的問題漂佩,很難找到四海皆準的辦法,這里我們只是簡單介紹下幾種經典的處理兼容性問...
    浪里行舟閱讀 1,391評論 1 14