項目兼容ie8技術要點

好久沒有寫博客了,因爲最近公司項目要調ie8兼容,一直在忙這事,終於竣工了,跟大家分享下這老掉牙的瀏覽器是如何搞定的。。。歡迎大家指教

項目是使用的jeecg框架,後臺使用的java,前端頁面使用了bootStrap,jquery,easyui框架,頁面是jsp+less+js,還用到了好多html5的新標記以及CSS3的新屬性以及媒體查詢。由於當時做項目時沒有考慮ie8,所以改的過程中遇到了好多好多問題。剛拿到項目時谷歌運行沒有問題,ie8一片慘白,不光沒有樣式,連字都沒有。。。沒有最慘只有更慘。不說廢話了,上乾貨

1.jquery

項目之前所用的jquery爲2.1.4版本,不兼容ie8(jquery2.0+都不兼容ie8),將所有頁面jquery均換成1.10.2版本。

2.bootstrap

項目所使用的bootstrap是3.3.4版本的,爲了兼容ie8做了如下設置

a.將jsp頁面加上了<!DOCTYPE html>

b.設置元標籤

<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

c.使用reponse.js使得支持媒體查詢

d.使用html5shiv.min.js使ie8支持html5新特性,注意:使用這個js後所有的html5新結構標記均變爲行內元素,需要手動設置display:block;

這樣設置後不僅支持了bootstrap還使得ie8兼容html5和媒體查詢。

3.less

之前使用的less是直接引入的less文件,並且引入less.js進行編譯。但是less.js在ie8不能用,會報錯。所以還是穩妥點,直接使用的css文件。我是通過在線less轉css編譯器轉的。

這樣基本樣式就差不多都出來了。

4.iframe

這個iframe之前給的height是百分比,但是ie8不支持iframe的高爲百分比的寫法。網上推薦了好多js設置高度的方法,我閒麻煩,寫了個CSS,解決了這個問題

 

iframe {
	width: 100%;
	height:100%;
	display: block;
	position: absolute;
}

5.彈性佈局問題

 

由於之前沒有考慮ie8,使用了大量的彈性佈局,這回可慘了,沒有簡單辦法,只能重寫。

彈性佈局新老版本共三種,最新的display:flex;兼容ie 10+;過渡版本和老版本(box)都不兼容ie8.。。所以放棄吧,重新寫佈局好了。雖然彈性佈局好用,但做項目一定要慎用flex

6.做項目遇見的最大的坑,這個坑不願別人,自己挖的自己跳。<哭泣>

所有的都設置好了,頁面就只有一小條,找了好久才找到問題。之前寫代碼馬虎,<nav>少些了一半。智能偉大的谷歌沒問題,到ie8這就慘了,就是不顯示。找了好久,所以,寫代碼一定要認真些啦。

7.CSS3

CSS3的新屬性和新選擇器ie8是不支持的,解決辦法換選擇器唄,不行就給個id/class啥的,新屬性不支持查資料說是引入PIE.htc的一個包,這個包有坑,我就沒有使用。能用濾鏡的就用的濾鏡。用不了的就選擇優雅降級啦。

8.CSS hack

還有最有一點,就是一定不要修改原文件代碼,將所有新的需要給ie單獨寫的代碼寫到新文件中,然後通過頭部註釋引用

<!--[if lte IE 8]>

<![endif]-->

用到的差不多就這麼多了,想到了我會繼續補充的。

 

發佈了34 篇原創文章 · 獲贊 56 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章