1. 程式人生 > >解決IE8下的一些相容性問題

解決IE8下的一些相容性問題

1.使用meta標籤調節瀏覽器的渲染方式,告訴瀏覽器用哪種核心渲染,360雙核瀏覽器就是在ie和chrome之間來回切換,幫我們判斷使用webkit還是chrome。
使用meta標籤來強制IE8使用最新的核心渲染頁面,程式碼如下:

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

一些相容性問題
* 瀏覽器相容問題一:塊屬性標籤float後,又有橫行的margin情況下,在IE6顯示margin比設定的大

問題症狀:常見症狀是IE6中後面的一塊被頂到下一行

碰到頻率:90%(稍微複雜點的頁面都會碰到,float佈局最常見的瀏覽器相容問題)

解決方案:在float的標籤樣式控制中加入 display:inline;將其轉化為行內屬性

備註:我們最常用的就是div+CSS佈局了,而div就是一個典型的塊屬性標籤,橫向佈局的時候我們通常都是用div float實現的,橫向的間距設定如果用margin實現,這就是一個必然會碰到的相容性問題。
瀏覽器相容問題三:設定較小高度標籤(一般小於10px),在IE6,IE7,遨遊中高度超出自己設定高度

問題症狀:IE6、7和遨遊裡這個標籤的高度不受控制,超出自己設定的高度

碰到頻率:60%

解決方案:給超出高度的標籤設定overflow:hidden;或者設定行高line-height 小於你設定的高度。

備註:這種情況一般出現在我們設定小圓角背景的標籤裡。出現這個問題的原因是IE8之前的瀏覽器都會給標籤一個最小預設的行高的高度。即使你的標籤是空的,這個標籤的高度還是會達到預設的行高。

瀏覽器相容問題四:行內屬性標籤,設定display:block後採用float佈局,又有橫行的margin的情況,IE6間距bug

問題症狀:IE6裡的間距比超過設定的間距

碰到機率:20%

解決方案:在display:block;後面加入display:inline;display:table;

備註:行內屬性標籤,為了設定寬高,我們需要設定display:block;(除了input標籤比較特殊)。在用float佈局並有橫向的margin後,在IE6下,他就具有了塊屬性float後的橫向margin的bug。不過因為它本身就是行內屬性標籤,所以我們再加上display:inline的話,它的高寬就不可設了。這時候我們還需要在display:inline後面加入display:talbe。

瀏覽器相容問題五:圖片預設有間距

問題症狀:幾個img標籤放在一起的時候,有些瀏覽器會有預設的間距,加了問題一中提到的萬用字元也不起作用。

碰到機率:20%

解決方案:使用float屬性為img佈局

備註:因為img標籤是行內屬性標籤,所以只要不超出容器寬度,img標籤都會排在一行裡,但是部分瀏覽器的img標籤之間會有個間距。去掉這個間距使用float是正道。(我的一個學生使用負margin,雖然能解決,但負margin本身就是容易引起瀏覽器相容問題的用法,所以我禁止他們使用)

瀏覽器相容問題六:標籤最低高度設定min-height不相容

問題症狀:因為min-height本身就是一個不相容的CSS屬性,所以設定min-height時不能很好的被各個瀏覽器相容

碰到機率:5%

解決方案:如果我們要設定一個標籤的最小高度200px,需要進行的設定為:{min-height:200px; height:auto !important; height:200px; overflow:visible;}

備註:在B/S系統前端開時,有很多情況下我們又這種需求。當內容小於一個值(如300px)時。容器的高度為300px;當內容高度大於這個值時,容器高度被撐高,而不是出現滾動條。這時候我們就會面臨這個相容性問題。

瀏覽器相容問題七:透明度的相容CSS設定:
css設定透明度,首先需要知道的是在瀏覽器中的不同使用,一般在ie中用的是filter:alpha(opacity=0);這個屬性來設定div或者是塊級元素的透明度,而在firefox中,一般就是直接使用opacity:0,對於相容的,一般的做法就是在書寫css樣式的將2個都寫上就行,就能實現相容,具體看程式碼:
方法一:

<html>
    <head>
        #div1{
            width:200px;
            height:600px;
            margin:0 auto;     
            opacity:0;
          filter:alpha(opacity=0);             //0 代表的是隱藏,就是透明度最低。
        }

    </head>
    <body>
        <div id='div1'>
            <p>測試文字。</p>
        </div>
    </body>
</html>

方法二:
CSS - firefox與IE透明度(opacity)設定區別
IE:
filter:alpha(opacity=sqlN)
其中 sqlN的值域為[0, 100]

Firefox,Chrome和Safari:
opacity:sqlN
其中sqlN的值域為[0, 1]
方法三:

.ieCss {   
     display:-moz-inline-box;   
     display:inline-block;   
     width:100;   
     height:100;   
     background-color:red;   
     filter:alpha(opacity=50);   
}   
.fireFox35Css {   
     display:-moz-inline-box;   
     display:inline-block;   
     width:100;   
     height:100;   
     background-color:blue;   
     opacity:0.5;   
}

相關推薦

解決IE8一些相容性問題

1.使用meta標籤調節瀏覽器的渲染方式,告訴瀏覽器用哪種核心渲染,360雙核瀏覽器就是在ie和chrome之間來回切換,幫我們判斷使用webkit還是chrome。 使用meta標籤來強制IE8使用最新的核心渲染頁面,程式碼如下: <meta h

position:fixed 在ie8相容性處理(附帶ie8以下不透明度相容)

1、解決fixed相容性核心程式碼: .ie{ _position: absolute; _clear: both; _top:expression(eval(document.compatMode &

解決IE8不支援border-radius的問題

最近做了一個專案,是讓相容IE8瀏覽器的,遇到了IE8不支援border-radius和box-shadow的問題,在網上找了解決方案,主要是藉助於PIE.htc,具體的過程,發一個寫的比較好的文章(看連線文章之後,如果您還沒有解決問題,建議回過頭來看看我下面的注意事項,否則

解決IE8opacity屬性失效問題,無法隱藏元素 解決IE8opacity屬性失效問題

解決IE8下opacity屬性失效問題   由於opacity屬性存在相容性問題,所以在IE8下,用opacity來設定元素的透明度,會失效,從而導致頁面的樣式問題。 在IE8及其更早的瀏覽器下,我們可以使用filter屬性,來代替opacity屬

解決IE8CSS3選擇器 :nth-child() 不相容的問題

1.定義和用法 :nth-child(n) 選擇器匹配屬於其父元素的第 N 個子元素,不論元素的型別。 n 可以是數字、關鍵詞或公式。 <ul> <li>1&l

解決ie8的iframe背景不透明為白色的問題

 'background-color' 特性的預設值為 ''''transparent'''',即透明;但是IE6/IE7/IE8中 BODY 元素的背景色不是 transparent,而是 #F

解決IE8提示'console'未定義錯誤

解決方法:   第一個思路就是建立一個console物件,實際就是console.info方法,為了能夠使用console的log、warn等方法還是最好寫個適用性強的好了,程式碼如下: window.console = window.console || (fu

解決IE8div 不顯示背景圖片的問題

最初是這樣寫的: background: url(../images/goods.png)no-repeat!important; 在ie8下不顯示,改成如下: background: url(../images/goods.png) no-repeat!important; 可以顯示了。 看出差

解決IE8圓角無法顯示的問題

.k-pager-numbers.k-state-selected{ border-width: 1px; border-style: solid; border-radius: 13px; width: 2em; text-align: ce

解決IE8,float右浮動不能與前面元素顯示在同一行

問題圖片(需要的效果是,返回按鈕與專案名稱在同一行,並且靠右): 原因: 當非float的元素和float的元素在一起的時候,如果非float元素在先,那麼float的元素將被排斥 解決方案: 將

使用ie的filter來解決rgba在IE8沒有效果的問題

pro 執行 tty tran ie8 sco clas css tex 使用ie的filter來解決rgba在IE8下沒有效果的問題,css代碼如下: background: rgba(255,255,255,0.1); filter:progid:DXImageTr

ie8數組不支持indexOf方法解決方法

不支持 nts 值轉換 原型 blog span floor color art if (!Array.prototype.indexOf){ Array.prototype.indexOf = function(elt){ var l

IE8,JS不識別indexOf的解決辦法

把這段程式碼放在你的indexOf方法之前:(在頁面中定義IndexOf方法) if (!Array.prototype.indexOf){           Array.prototype.indexOf = functi

nmake一些錯誤的解決辦法

最近需要安裝一下liblineaner這個庫,https://github.com/cjlin1/liblinear windows下面的安裝過程如下: 1. Open a dos command box and change to liblinear directory. If en

IE8rgba()不相容的解決方法

CSS: //一般的高階瀏覽器都支援 background: rgba(255,255,255,0.1); //IE8下 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#19ffffff,e

解決getElementsByClassName()在IE8的相容問題

getElementsByClassName,這個方法讓我們可以通過 class 屬性中的類名來訪問元素,但是IE9 以下的瀏覽器不支援 。為解決這個問題,我們寫一個相容函式 getByClass() 實現在IE低版本和現代瀏覽器中都能通過類名來獲取節點。 function getBy

在ie7、ie8 td th寬度解決方法

<!doctype html> <html> <head> <meta charset=""utf-8""> <style> .title {background-color:#ccc;width: 15

IE8table th和td寬度樣式混亂解決辦法

先看看一個對比(IE8下的table樣式) 上面這種看似沒有問題,接下來看下一個: 、 當table表格的 td內容很多並且換行 的時候,那麼在IE8下的table樣式就會混亂。此時無論給th還是td設定寬度都是 無效的!!! 言簡意賅,先給解決方

IE8select出現bug解決

select控制元件在IE8下出現的bug(IE6、IE7都OK的) document.all.seltZw.add(window.Option(province[i], province[i])); 改為-》 document.getElementById("seltZw

linux配置apache虛擬主機解決方案以及一些問題

回南昌了,發現這邊很多公司都是用apache的,上海那邊都是使用nginx伺服器,可見差距啊 博主今天興致來了,正好之前在Mac虛擬機器上配了一臺apache伺服器,於是就到自己Mac虛擬機器上配置虛擬主機吧(老早的時候我是在win上配置的虛擬主機) 1,首先我配置時候,就