天天看點

關于IE的一些hack

TIPS:對于完全放棄IE的幸福開發者,以下内容全是廢話,建議跳轉到 部落格園 着頁,尋找更優質的文章。

對于前端開發來說IE一直是心裡的痛,不管你覺得做的多好的網頁,放到它上面總會有一些意想不到的問題發生,是以你不得不針對IE單獨做些手腳,你就有必要知道一些IE浏覽器下的hack寫法。

比較常用的幾個hack(目前大多公司都隻要求相容到IE8,稍微變态點的也就是IE7下沒大的錯位就行了,下面hack足以):

9 像如:6.5em;8em9;在ie7-ie10寬度是8em;

 像如:6.5em;8em;在ie8-ie11寬度是8em;

* 像如:6.5em;*8em ie7以下會寬度是8em

針對IE11還可以通過以下媒體查詢的方式來解決IE11下的問題:

@media screen and(-ms-high-contrast:active),(-ms-high-contrast:none) {

    div{8em;}

}

加上以上代碼可以讓IE11下div的寬度為8em,為了避免IE低版本下也會認識這一媒體查詢,最好在screen前加上only。

在IE浏覽器下,特别是IE8以下個人感覺真真沒必要去太折騰(win7的最低配置都是ie8了),但是為了更好的體驗,可以針對IE8以下浏覽器給出一個友善的更新提示也是很不錯的,IE下的條件注釋語句值得擁有:

//ie7及以下會提示使用者去更新浏覽器
<!--[if lte IE 7]>
 <div class="browser-upgrade">你的浏覽器版本過低,請到<a href="http://browsehappy.com" class="browser-upgrade__link">這裡</a>更新,以擷取最佳體驗!</div>
<![endif]-->      

條件語句還有更多用途,在使用html5新增标簽頁面可以針對IE低版本引入htmlshiv讓低版本浏覽器也能識别html新增标簽:

<!--[if lt IE 9]>
<script type="text/javascript"  src="http://www.ijquery.cn/js/html5shiv.js"></script>
<![endif]-->      

ie的條件語句常用的有幾下幾種(所有條件注釋語句在非IE浏覽器下都是普通的注釋,不要用非ie去給非IE的浏覽執行操作):

lt :就是Less than的簡寫,也就是小于的意思。

lte :就是Less than or equal to的簡寫,也就是小于或等于的意思。

gt :就是Greater than的簡寫,也就是大于的意思。

gte:就是Greater than or equal to的簡寫,也就是大于或等于的意思。

!:就是不等于的意思,跟javascript裡的不等于判斷符相同。

<!--[if IE]>
    隻有IE才支援
<![endif]-->
<!--[if !IE 7]>
    IE7不支援
<![endif]-->
<!--[if lt IE 8]>
    IE8以下浏覽器才支援
<![endif]-->
<!--[if lte IE 8]>
    IE8及以下浏覽器才支援
<![endif]-->
<!--[if gt IE 8]>
    IE8以上浏覽器才支援
<![endif]-->
<!--[if gte IE 8]>
    IE8及以上浏覽器才支援
<![endif]-->      

好好運用上面的方法解決你項目中的IE别樣BUG吧。