關於IE相容問題

2022-07-05 04:27:09 字數 1925 閱讀 9471

針對ie6/7/8 可以分為兩種模式:怪異模式(quirks mode)和標準模式(standards mode),在ie6以下版本下顯示怪異模式,border和padding都包含在width中

使用ie7編譯:

也可以引進相應的js外掛程式去解決html5和css3的問題,但是只能在小範圍內或者單頁中使用,代價是消耗效能

一、針對ie hack的技巧進行總結:

有四種方法: 1、條件注釋法 2、類內屬性字首法 3、選擇器字首法 4、ie選擇器字首法

1、條件注釋法

除了ie都相容

ie6相容

ie6以下相容

ie6及ie6以上相容

lt:later than

lte: later than and equal

gt: greater than

gte: greater than and equal

2、類內屬性字首法

div3、選擇器字首法

在上面介紹的兩種方法基本上能解決80%的相容性問題,一般不建議優先使用選擇器字首法,因為採用**查詢的方法(需要css3支援)

@media screen and(-webkit-min-device-pixel-ratio:0)

}4、ie選擇器字首法

如果碰到ie8專屬的hack使用上面的方法都沒辦法解決時,就可以使用這種方法了,前提是讓ie6-ie8先支援**查詢

/*ie8*/

@media \0screen

}ie6-ie11 全部相容方法(從高版本寫到低版本)

div@media screen and(-ms-high-contrast:none)

}@media all and(-ms-hign-contrast:none)

}現在用的比較多的就是\9、\0,這是hack ie8、ie9、ie11的專屬標識,但是有很多情況下\9、\0對hack ie8、ie9、ie11都不管用。

可能很多人知道\9是用來hack ie9的,\0是用來hack ie8、ie9、ie11的,但是很多情況下都不奏效,

其實ie11僅能識別\0,ie8、ie9能識別\0和\9,那麼如何區分ie8和ie9呢?

但是在meta裡面定義了meta="ie edge」的話,ie11僅能識別\0,ie8 ie9能識別\0和\9,關鍵還是在區分ie8 和ie9,所以**可以如下:

div

/*ie9+*/

@media all and(min-width:0)

}

二、ie除錯技巧

1、ie6-ie10大部分的div浮動問題都可以通過設定層的width、height和背景色(除錯)解決

2、容器內有浮動層元素的,在容器末尾新增清除浮動屬性。

3、使用ie-test和谷歌除錯工具,ie8以下版本使用fire-bug的js版本,ie8及以上的參考內建的除錯工具(和實際效果顯示不一樣)

4、相容性版本的和實際效果是有差距的

5、除錯版本都從高到低版本進行除錯,防止屬性版本汙染

6、除錯過程中,依次從外圍向里刪除無關的html結構和css/js,直到出現問題的賭坊

7、盡量少些hack,用其他方式可以避免則盡量避免

三、ie個版本的bug

1、ie6 margin雙倍邊距

在ie6中,浮動的div左右邊上的margin會有雙倍的值,解決方法:在這個div裡新增display:inline;

2、ie6 下會有空白縫隙

解決方法:改變html的布局,設定img為display:block或者vertical-align:top|bottom|middle都可以解決

3、ie6無法定義1px左右高度的容器

主要是ie6下的預設行高造成的

解決辦法:overflow:hidden|zoom:0.08|line-height:1px

ie相容問題

是html5的宣告,主流的遊覽器中只有ie8及以下版本不支援,這樣ie會進入quirks模式。但之後的宣告可以強制指定ie的呈現模式,所以宣告對ie就無影響。html5並沒有xhtml那麼嚴格,對於一般的xhtml頁面,基本都不通完全通過w3c驗證標準,而改為html5宣告後基本都能過。複製 如下 ...

IE相容問題

一行 輕鬆搞定各種ie相容問題,ie6,ie7,ie8,ie9,ie10 trigkit4 content ie emulateie7 在這裡送上幾種ie使用模式 1.強制使用ie5模式來解析 content ie 5 2.強制使用ie6模式來解析 content ie 6 3.強制使用ie7模式來...

IE相容問題

今天入了乙個坑 別叫我相容ie,垃圾ie 問題是這樣的,我從乙個頁面通過檢視詳細跳到另乙個頁面,而另乙個頁面展示這個資料項的詳情,調整使用url調整,通過sessionlocation來傳值,專案使用的是vue,只是直接在html中引入。但是點選沒有被禁用的select選擇框或者向輸入框輸入文字的時...