瀏覽器兼容

  • 如何調(diào)試 IE 瀏覽器
    1 安裝高版本IE瀏覽器,如安裝的是IE9,則可以直接調(diào)試IE9、IE8、IE7
    2 IE6需要安裝windowsXP虛擬機(jī)。
    3 IE7以上版本可用自瀏覽器自帶的開發(fā)者工具進(jìn)行調(diào)試,IE6可設(shè)置border或outline屬性調(diào)試塊元素及盒模型。
  • 什么是CSS hack?在 CSS 和 HTML里如何寫 hack?在 CSS 中 ie6、ie7的 hack 方式?
    • 由于不同廠商的流覽器或某瀏覽器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),對CSS的支持、解析不一樣,導(dǎo)致在不同瀏覽器的環(huán)境中呈現(xiàn)出不一致的頁面展現(xiàn)效果。這時,我們?yōu)榱双@得統(tǒng)一的頁面效果,就需要針對不同的瀏覽器或不同版本寫特定的CSS樣式,我們把這個針對不同的瀏覽器/不同版本寫相應(yīng)的CSS code的過程,叫做CSS hack!
    • CSS和HTML寫hack的方法:
      1 屬性前綴法(即類內(nèi)部Hack):例如 IE6能識別-, _, *,IE7能識別星號*,但不能識別_,_,IE6~IE10都認(rèn)識\9,但firefox前述三個都不能認(rèn)識
p {
  -width: 100px;
  _width: 100px;
}/*兼容IE6*/
p {
  *width: 100px;
}/*兼容IE6 7,可使用的符號有 ! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > |  */
說明:在標(biāo)準(zhǔn)模式中
“-″減號是IE6專有的hack
“\9″ IE6/IE7/IE8/IE9/IE10都生效
“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
“\9\0″ 只對IE9/IE10生效,是IE9/10的hack

2 選擇器前綴法(即選擇器Hack):例如 IE6能識別html .class{},IE7能識別+html .class{}或者*:first-child+html .class{}

應(yīng)用星號HTML hack
#content {
  width: 80px;
  padding: 10px;
}
   * html #content {
  width: 100px;
  w\idth: 80px;  
} /*兼容IE6或更低版本的瀏覽器*/
應(yīng)用子選擇器hack
html > body {
  background-image: url(bg.png);
}/*使用子選擇器hack對windows上的IE5和IE6隱藏background-image屬性,這個選擇器對IE7以下是無效的。*/

3 IE條件注釋法(即HTML條件注釋Hack):針對所有IE(注:IE10+已經(jīng)不再支持條件注釋): ,針對IE6及以下版本: 。這類Hack不僅對CSS生效,對寫在判斷語句里面的所有代碼都會生效

只在IE下生效
    <!--[if IE]>
    這段文字只在IE瀏覽器顯示
    <![endif]-->
    
    只在IE6下生效
    <!--[if IE 6]>
    這段文字只在IE6瀏覽器顯示
    <![endif]-->
    
    只在IE6以上版本生效
    <!--[if gte IE 6]>
    這段文字只在IE6以上(包括)版本IE瀏覽器顯示
    <![endif]-->
    
    只在IE8上不生效
    <!--[if ! IE 8]>
    這段文字在非IE8瀏覽器顯示
    <![endif]-->
    
    非IE瀏覽器生效
    <!--[if !IE]>
    這段文字只在非IE瀏覽器顯示
    <![endif]-->
符號 說明
lte: 就是Less than or equal to的簡寫,也就是小于或等于的意思。
lt : 就是Less than的簡寫,也就是小于的意思。
gte: 就是Greater than or equal to的簡寫,也就是大于或等于的意思。
gt : 就是Greater than的簡寫,也就是大于的意思。
! : 就是不等于的意思,跟javascript里的不等于判斷符相同
  • 在IE6和IE7下的css hack
  • HTML hack
<!--[IF IE 6]>
This a Internet Explore 6 browser.
<![ENDIF]-->
<!--[IF IE 7]>
his a Internet Explore 7 browser.
<![ENDIF]-->

IE6 CSS hack:

div.ct{ 
display:inline-block; 
_display:inline;
}
*div.ct{ 
display:inline;
}

IE7 CSS hack:

div.ct{ 
display:inline-block; 
*display:inline;
}
  • 列舉幾種 瀏覽器兼容問題
    1 不同瀏覽器之間默認(rèn)的padding與margin有較大差異,常在CSS里用* {padding:0;margin:0;}解決。
    2 雙外邊距浮動bug
    • 在IE6和更低版本的瀏覽器中,這個window bug使任何浮動元素上的外邊距加倍。

p {
float: left;
margin-left: 100px;
}

![高版本瀏覽器中](http://upload-images.jianshu.io/upload_images/2155778-d3179b2a2b9aae62.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![IE6中](http://upload-images.jianshu.io/upload_images/2155778-08292a0d4111f015.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  *  解決方法是給元素設(shè)置display: inline;屬性(行內(nèi)元素設(shè)置display:block;并且設(shè)置浮動時用同樣方法解決)

  3  設(shè)置較小高度標(biāo)簽(一般小于10px),在IE6,IE7中高度超出自己設(shè)置高度
![高級瀏覽器與IE6在小于10px高度時的區(qū)別](http://upload-images.jianshu.io/upload_images/2155778-011acb4be792cdfb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 
  *  解決方法:設(shè)置overflow:hidden

  4 幾個img標(biāo)簽放在一起的時候,有些瀏覽器會有默認(rèn)的間距,加了問題一中提到的通配符也不起作用。
  *  解決方法:設(shè)置浮動,設(shè)置負(fù)margin屬性。

  5  標(biāo)簽最低高度設(shè)置min-height不兼容

p {
width: 200px;
min-height: 200px;
background: yellow;
}

![min-height屬性在IE6下不兼容](http://upload-images.jianshu.io/upload_images/2155778-4acd5636c46b77a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  *  解決方法:在css里寫入*height:200px;這樣就在IE6 7版本下寫死這個高度。

  6  各個瀏覽器透明度的css兼容寫法

filter:alpha(opacity=50); /IE,透明度50%/
-moz-opacity:0.5; /Firefox,透明度50%/
opacity:0.5;/其他瀏覽器,透明度50%/





* 針對兼容、多瀏覽器覆蓋有什么看法?**漸進(jìn)增強(qiáng)**和**優(yōu)雅降級**是什么意思?
  *  要針對項目本身進(jìn)行調(diào)研,查看目標(biāo)人群使用的瀏覽器情況。一般情況對于使用人群小于5%的就可以忽略了,兼容和覆蓋全部瀏覽器這本身就是不現(xiàn)實的,而且涉及到時間和成本的問題,還有一些暫時無法解決的兼容性bug等,這些都需要綜合考慮。

  *  漸進(jìn)增強(qiáng) :針對低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗。

  *  優(yōu)雅降級 :一開始就構(gòu)建完整的功能,然后再針對低版本瀏覽器進(jìn)行兼容。
* reset.css和normalize.css分別是做什么的?為什么推薦使用 nomalize.css?
  * reset.css表示瀏覽器樣式重置。HTML標(biāo)簽在瀏覽器中都有默認(rèn)的樣式,例如p標(biāo)簽有上下邊距,strong標(biāo)簽有字體加粗樣式等。不同瀏覽器的默認(rèn)樣式之間存在差別,例如ul默認(rèn)帶有縮進(jìn)樣式,在IE下,它的縮進(jìn)是由margin實現(xiàn)的,而在Firefox下卻是由padding實現(xiàn)的。開發(fā)時瀏覽器的默認(rèn)樣式可能會給我們帶來多瀏覽器兼容性問題,影響開發(fā)效率。現(xiàn)在很流行的解決方法是一開始就將瀏覽器的默認(rèn)樣式全部覆蓋掉,這就是CSS reset。

  *  [Normalize.css](https://github.com/necolas/normalize.css),它是一個定制的 reset.css 文件,可以讓所有元素在所有的現(xiàn)代瀏覽器上渲染一致。相比其它的 reset.css,Normalize.css 保留有用的默認(rèn)樣式,不像其它 reset.css 那么徹底,移除了每個默認(rèn)樣式,然后又得費神把需要的樣式再加回來。Normalize.css 定義絕大多數(shù)元素的默認(rèn)樣式,并且還提高了一些元素的可用性,并且代碼都有詳細(xì)的注釋。
  *  Normalize.css支持的瀏覽器有
>Google Chrome (latest)
Mozilla Firefox (latest)
Mozilla Firefox 4
Opera (latest)
Apple Safari 6+
Internet Explorer 8+
  *  Normalize.css 使用非常簡單,無需下載,只要在網(wǎng)頁的頭部加入以下代碼即可:

<link rel="stylesheet" type="text/css" />

* IE盒模型和標(biāo)準(zhǔn)盒模型有什么區(qū)別? 怎樣使 IE678使用標(biāo)準(zhǔn)盒模型?box-sizing:border-box有什么作用
  *  IE盒模型:IE早期版本在混雜模式中(不聲明!DOCTYPE HTML)使用自己的非標(biāo)準(zhǔn)盒模型。在這些版本中width屬性不是內(nèi)容的寬度,而是內(nèi)容+內(nèi)邊距+邊框的總和寬度。
  *  標(biāo)準(zhǔn)盒模型:標(biāo)準(zhǔn)盒模型就是W3C盒模型,width只為內(nèi)容的寬度。
  *  在頁面頭部添加<!DOCTYPE html>可以使IE使用標(biāo)準(zhǔn)盒模型。
  *  為頁面所有元素添加樣式 box-sizing: border-box; ,使元素的內(nèi)邊距和邊框不再會增加它的寬度。
  *  下圖可以看出div1設(shè)置了padding和border值但是寬高與div2一可以看出box-sizing: border-box;的效果。![box-sizeing: border-box](http://upload-images.jianshu.io/upload_images/2155778-9b37e4d27c4398dc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

*  在 ie 6, 7, 8中展示 **盒模型**、**inline-block**、**max-width**的區(qū)別
  *  盒模型的區(qū)別:![IE6未聲明!DOCTYPE HTML和chrome的區(qū)別](http://upload-images.jianshu.io/upload_images/2155778-337610292bab2462.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![IE7未聲明!DOCTYPE HTML](http://upload-images.jianshu.io/upload_images/2155778-36fd40e2d0648f8f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![IE8未聲明!DOCTYPE HTML](http://upload-images.jianshu.io/upload_images/2155778-65988a8d2844ebac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



  * inline-block屬性在IE6 IE7 下無效
  *  max-width屬性在IE6下無效

div {
width: 100px;
height: 100px;
background-color: yellow;
border: 1px solid red;
max-width: 50px;
display: inline-block;
}

![IE6下的inline-block,max-width](http://upload-images.jianshu.io/upload_images/2155778-9078fcb956085bd1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![IE7下的inline-block,max-width](http://upload-images.jianshu.io/upload_images/2155778-517a1782ce75aa4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![IE8下的inline-block,max-width](http://upload-images.jianshu.io/upload_images/2155778-d3c0facf490a48c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

*  參考
[http://www.teaching-materials.org/csstools/](http://www.teaching-materials.org/csstools/)
[知乎:怎樣可以很好地保證網(wǎng)頁的瀏覽器兼容性](https://www.zhihu.com/question/19736007)
[讓我們談一談 Normalize.css](http://jerryzou.com/posts/aboutNormalizeCss/)
[知乎: Normalize.css 與傳統(tǒng)的 CSS Reset 有哪些區(qū)別](https://www.zhihu.com/question/20094066)
[常見瀏覽器兼容于解決方式](http://blog.csdn.net/chuyuqing/article/details/37561313/)
[定義瀏覽器默認(rèn)樣式](http://blog.wpjam.com/m/normalize-css/)
`本博客版權(quán)歸 本人和饑人谷所有,轉(zhuǎn)載需說明來源`
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,347評論 2 377

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

  • 一、如何調(diào)試 IE 瀏覽器? 在IE7以上的版本中可以通過按快捷鍵F12調(diào)出開發(fā)人員調(diào)試框,如下圖IE7以上調(diào)試工...
    dengpan閱讀 558評論 0 2
  • 一、如何調(diào)試 IE 瀏覽器 IE7以上版本自帶的開發(fā)者工具,IE6可以用border的方法;例:IE11的開發(fā)者工...
    __Qiao閱讀 1,134評論 2 17
  • 一、問答部分 1. 如何調(diào)試 IE 瀏覽器 IE7及以上版本有調(diào)試臺,可以按F12啟動。Paste_Image.p...
    _hello__world_閱讀 481評論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,779評論 1 92
  • 有你在,真好,不然做任何事情都毫無意義!美好的東西我總是想第一時間與你分享,想和你一起看最美的風(fēng)景。 相遇總是美好...
    奇天插畫原畫閱讀 368評論 0 1