針對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選擇框或者向輸入框輸入文字的時...