1. 程式人生 > >IE下的hack

IE下的hack

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

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

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

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

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

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

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

    div{width: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]-->
複製程式碼

相關推薦

IEhack

對於前端開發來說IE一直是心裡的痛,不管你覺得做的多好的網頁,放到它上面總會有一些意想不到的問題發生,所以你不得不針對IE單獨做些手腳,你就有必要知道一些IE瀏覽器下的hack寫法。 比較常用的幾個hack(目前大多公司都只要求相容到IE8,稍微變態點的也就是IE7下沒

hack css編寫ie才生效的css

CSS hack方式二:類內屬性字首法 屬性字首法是在CSS樣式屬性名前加上一些只有特定瀏覽器才能識別的hack字首,以達到預期的頁面展現效果。 IE瀏覽器各版本 CSS hack 對照表 hack 寫法 例項 IE6(S) IE6(Q) IE7(S) IE7(

ie常見的css兼容問題

-m blank href 消失 特性 元素 out 識別 play 1.border-radius 邊框圓角 IE8及以下瀏覽器不支持border-radius webkit引擎支持-webkit-borderradius 私有屬性 mozilla Gecko引擎支持

IE推斷IE版本號的語句

sof -m ont 解釋 style ros art hat padding 樣例: 1. <!--[if !IE]> 除IE外都可識別 <![endif]--> 2. <!--[if IE]> 全部的IE可識別

Vue在IE顯示空白問題

-- tle enc import href 參考 網站 bpa polyfill 主要是IE對promise的支持不好,我也是搜索後解決的,主要參考這個網站https://babeljs.io/docs/usage/polyfill/安裝 npm install --sa

Jquery form.js文件上傳返回JSON數據,在IE提示載文件的解決辦法,並對返回數據進行正確的解析

設置 解析 轉換 解決 pla esp 下載 ring 上傳 Jquery from.js插件上傳文件非常方便,但是在ie10以下的版本會彈出下載文件對話框 解決方法: 1、在服務端設置response.setContentType("text/plain"); 2、對返回

JPG 圖片在IE不能顯示的問題

可能 軟件 保存 低版本 body 不同 cnblogs ps軟件 正常 最近碰到一些客戶說,我傳的產品圖片怎麽在網站上無法顯示啊。圖片也是正常的jpg格式呢。 是的,你傳的圖片是JPG的,但是怎麽就顯示不出來呢? 你找深圳網站建設的公司給你建了一個網站,然後

通過擴大IE使用內存,解決skyline在IE模型不能加載的方法

內存 sky -1 int 作用 無法顯示 進行 使用 style 環境:skyline TerraExploere 6.6.1,win10 專業版 64位,ie 11 情況描述:在ie下瀏覽三維場景,ie占用內存不斷增大並且內存占用固定在一個最高範圍內,三維場景中部

IE常見兼容性問題

href load display lock sharp span one 使用 important 一.IE6/IE7對 display-inblock支持的欠缺 Html代碼: <div class="nav"> <ul> <

webpack+babel項目在IE報Promise未定義錯誤引出的思考

sync 例子 fine ans 原型 mark ron issue includes 低版本瀏覽器引起的問題 最近開發一個基於webpack+babel+react的項目,一般本地是在chrome瀏覽上面開發,chrome瀏覽器開發因為支持大部分新的js特性,所以一般不怎

關於各瀏覽器Hack的寫法

-s 綜合 *** body select head pro 人員 而且 下面是我收集有關於各瀏覽器下Hack的寫法: 1、Firefox @-moz-document url-prefix() { .selector { property: value; } } 上面

vue-cli項目在IE運行鉤子函數拋出異常“ReferenceError: “Promise”未定義&quot;”的解決辦法

ron spa 項目 dev run ont out webpack log 兼容IE是個坑,低版本IE很多都沒法跑起來 問題現象:vue-cli項目在IE下運行,會在鉤子函數出現 ReferenceError: “Promise”未定義 解決辦法: step1:安裝最新

iehack

less ie7 ack ie8 class lte pre 裏的 com * 或 # ,IE7、IE11 支持。 \9 ,IE8、IE9、IE11 支持。 \0 ,IE8、IE9 支持。 *、#、\9、\0 這幾個寫法除了IE外其他瀏覽器均不支持。 .all IE

IE js裏面new Date("2017-07-11 08:00:00") 出現NAN的問題以及解決方法

c中 ase lib tle base net mac date 說明 在js裏面用了這個方法 var $date= new Date("2017-07-11 08:00:00") 可是打印的時候為 NAN。查了下 只有IE下有這個問題,然後我找了下 ,發現只要把

Vue 2.0 專案在IE顯示空白

新寫的專案在 IE瀏覽器顯示空白 解釋一: Babel預設只轉換新的JavaScript句法(syntax),而不轉換新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全域性物件,以及一些定義在全域性物件上的方法(比如Obj

window.open在IEajax中的相容性

問題:在ajax中window.open在IE下會彈出瀏覽器阻止視窗的問題,進而不再執行window.open開啟新tab頁的方法 解決方法: 在ajax方法之前加上: windowOpenHandler = window.open("/loading-tips.html"); //

IE支援文字框和密碼框placeholder效果的JQuery外掛分享

placeholder是HTML5新增的一個屬性,當input設定了該屬性後,該值的內容將作為灰色提示顯示在文字框中,當文字框獲得焦點時,提示文字消失。 實現程式碼如下: (function($) { var placeholderfriend = { focus: functi

解決SpringMVC返回JSON IE提示下載

SpringMVC的配置檔案中: <!--註解驅動 --> <mvc:annotation-driven> <mvc:message-converters> <!-- <ref bean="stringHttpMessag

vue-cli專案在IE執行鉤子函式丟擲異常“ReferenceError: “Promise”未定義”的解決辦法

相容IE是個坑,低版本IE很多都沒法跑起來 問題現象:vue-cli專案在IE下執行,會在鉤子函數出現 ReferenceError: “Promise”未定義 解決辦法: step1:安裝最新的web-pack-server 命令列:npm install --save-dev web

IE複選框多次快速點選複選框狀態出現紊亂情況

複選框點選事件: <input type="checkbox" id="chk_2109_0" name="SFWSJ" kfdm="2109" onclick="setBNRJFProcess(this,2109);" > 在IE下連續多次點選,setBNRJFProces