1. 程式人生 > >讓Bootstrap 3(相容IE8瀏覽器)在IE8下未能自適應解決辦法

讓Bootstrap 3(相容IE8瀏覽器)在IE8下未能自適應解決辦法

最近在研究Bootstrap(官方Github) 這個優秀的前端框架,Bootstrap最開始是Twitter團隊內部的一個前端框架,所謂前端框架就是一個CSS/HTML框架,框架裡面有下拉菜 單、按鈕組、按鈕下拉選單、導航、導航條、麵包屑、分頁、排版、縮圖、警告對話方塊、進度條、媒體物件等。Bootstrap他們預先定義好,等要進行正 式製作網頁的時候,我們可以直接用裡面的class就可以了。

今天不多介紹Bootstrap的功能,以後有機會可以重點介紹一下,確實十分優秀。響應式佈局,定製性強,元件豐富,與Jquery完美契合。

進入主題,說說Bootstrap 3的相容IE8問題。

Bootstrap是一個響應式的佈局,你可以在寬屏電腦、普通電腦,平板電腦,手機上都得到非常優秀的佈局體驗。這種響應式的佈局正是通過 CSS3的媒體查詢(Media Query)功能實現的,根據不同的解析度來匹配不同的樣式。IE8瀏覽器並不支援這一優秀的Css3特性,Bootstrap在開發文件中寫了如何使用 進行相容IE8。但是筆者多次嘗試沒有成功,IE8的佈局是亂的。直到今天忍無可忍,決定再嘗試一下,最終獲得成功。有些細節沒有注意到,導致IE8沒法 響應式佈局。

下面講解下如何讓Bootstrap 3相容IE8瀏覽器,至於有人會問我如何相容IE6 IE7,請繞道搜尋bsie (bootstrap2)。

Bootstrap在IE8中肯定不如Chrome、Firefox、IE11那麼完美,部分元件不保證完全相容,還是要Hack的。這裡不談。

1、使用html5文件宣告

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
 
</body>
</html>

2、加入meta標籤

前者定義媒體查詢,後者確定顯示此網頁的IE版本。

展開程式碼
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

3、引入bootstrap檔案

這步十分重要,這裡要看你是引用其他網站(CDN)的bootstrap檔案還是把Bootstrap檔案放本地。這裡我放在本地。

4、引入respond.js 和 html5.js

respond.jsGithub)是用於媒體查詢的,專案說明描述:要和需要進行媒體查詢的檔案放在同一域中。不然CDN部署的需要更改一些選項,之後再說。

html5shiv : html5.js(Google Code)(Github)是讓不(完全)支援html5的瀏覽器“支援”html5標籤。

<!--[if lte IE 9]>
<script src="bootstrap/js/respond.min.js"></script>
<script src="bootstrap/js/html5.js"></script>
<![endif]-->

4.1 CSS檔案在CDN上(或子域名)的Respond.js部署

詳情請見:https://github.com/scottjehl/Respond#cdnx-domain-setup Github上說,這個js是通過ajax複製一份你的css檔案。所以需要一個代理頁面去請求檔案。需要上傳一些檔案,步驟比較複雜,而且一般公共CDN基本沒人有這種操作許可權。之後再新增程式碼。

<!-- Respond.js proxy on external server -->
<link href="http://externalcdn.com/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
 
<!-- Respond.js redirect location on local server -->
<link href="/path/to/respond.proxy.gif" id="respond-redirect" rel="respond-redirect" />
 
<!-- Respond.js proxy script on local server -->
<script src="/path/to/respond.proxy.js"></script>

5、新增1.X版本的Jquery庫

Jquery 2.0以上就不再支援IE 6/7/8 這三大虐心神器了。所以要想使用Bootstrap3中的一些外掛效果,比如modal 彈出層對話方塊這類控制元件。我們就需要新增 2.0以下的,這裡我用1.10.2的Jquery庫。
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>

6、總結

本人非前端工程師,只是愛好者一枚,如有錯誤還請批評指教。大家相互學習~

本站是採用了Powered by ASP.NET MVC4.0 + Bootstrap 3.0 但是使用了百度的公共CND、因為上面說了 沒有許可權所以本站IE8下的問題還存在。但是此篇博文可以幫你解決在IE8下未能自適應的問題

主要還是在於讓respond.js起效果,關鍵就是讓bootstrap的檔案和respond.js同域,不同域需要用CDN上的html做ajax。

懶人程式碼總結如下:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="author" content="Jophy" />
<title>ie8</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="bootstrap/css/style.css">
<!--[if lte IE 9]>
<script src="bootstrap/js/respond.min.js"></script>
<script src="bootstrap/js/html5.js"></script>
<![endif]-->
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
</body>
</html>
原文連結:http://www.bianyun.net/zhanzhang/article/11034.html