DIV+CSS解決IE6,IE7,IE8,FF兼容問題

1.IE8下兼容問題,這個最好處理,轉化成IE7兼容就能夠。在頭部加以下一段代碼,而後只要在IE7下兼容了,IE8下面也就兼容了:
1. <metahttp-equivmetahttp-equiv="x-ua-compatible"content="IE=7"/>
2.
2.flaot浮動形成IE6下面雙倍邊距問題,這個最多見,也最好處理,!important解決,好比
margin-left:10px!important;/*IE7,IE8,FF下是10PX*/;
margin-left:5px;/*IE6下屬性寫的是5PX,但在顯示出來的是10px
3. 清除塊display,這個能夠解決浮動形成的塊,形成塊後,當DIV背景填色或填圖片的時候,會出現背景斷開或差一小塊。這種兼容出現的不太多,我作到 如今,只遇到過兩次,方法是在出現兼容的DIV的CSS中寫一個display:block,或其它屬性,中文什麼意思我不知道,我英語差,但能達到想要 的效果,6e"Z+e%|8G#|
4.不少朋友DIV+CSS的時候,會出現,在IE的幾個瀏覽器下都好了,可是在FF出問題了, 用!important又會把IE7作的不兼容,很頭疼,在想,有沒有什麼方法只對FF下進行操作,我用過這個方法,感受得是百試不爽,就是在屬性前面加 符號如:*、&,¥,#,@,—,+,加過符號的屬性只有IE的瀏覽器才識別,而FF不識別,方法以下(注意有符號的屬性和沒符號的屬性的順序)
height:100px;/*FF下顯示100的高*/
+height:120px;/*IE678下顯示120高*/
5.有時候,會在佈局的時候,發現,有一個DIV浮動了,接下來的一個DIV原本是要在下面顯示的,結果跑上面去了,這種狀況通常在FF下面會出現,解決的辦法就是清除一下浮動,在設置過浮動的那個DIV下面加一個DIV,CSS面寫個clear:both;以下
1. <divstyledivstyle="float:left;height:100px;width:500px;">
2. <divstyledivstyle="clear:both;">
3. <divstyledivstyle="height:100px;width=300px">
6.再就是居中問題,這個問題在新手身上不少,主要緣由是對盒子模型不夠理解,沒熟記盒子模型,若是發現你的頁面沒有局中,我如今知道的,有這幾個緣由:
1.一個是沒盒子,就是BODY後的一個大DIV把全部DIV裝起來的那個,你沒寫。
2.就是你寫了,可是寬度沒用絕對寬度:而是用一個相對的寬度,想局中,必須用絕對寬度。-
7.擴展:若是我想在設計的時候,實現IE6,IE7,FF下出現三種不一樣的效果,好比IE6下背景紅色,IE7下藍色FF下綠色,這裏,我本身試過,能夠,用兼容的方法(注意順序,能夠好好理解一下)。
7L&t-o7k-a1I
background:red;/*FF裏顯示的紅色*/
+background:blue!important;/*IE7下面顯示的藍色*/
+background:green;/*IE6下面顯示的綠色*/

IE6 IE7 IE8 FF瀏覽器的CSS兼容問題
IE六、IE七、IE八、FF瀏覽器的CSS兼容問題,原本IE6跟ff之間的兼容是很容易解決的。加上個IE7會麻煩點,IE8的出現就更頭疼了,原來hackIE7的方法又不能用了,怎麼辦呢?
還好,微軟提供了這樣一個代碼:
 
1. <metahttp-equivmetahttp-equiv="x-ua-compatible"content="IE=7"/>
把這段代碼放到<head>裏面,在IE8裏面的頁面解析起來就跟IE7如出一轍的了,因此,基本上能夠無視IE8,剩下的代碼只須要這樣寫就能夠了
1. background:#ffc;/*對firefox有效*/
2. *background:#ccc;/*對IE7有效*/
3. _background:#000;/*只對IE6有效*/
解釋一下吧:
◆firefox能解析第一段,後面的兩個由於前面加了特殊符號「*」和「_」,firefox認不了,因此只認background:#ffc,看到的是黃色;
◆IE7前兩短都能認,以最後的爲準,因此最後解析是background:#ccc,看到的是灰色;
◆IE6三段都能認,並且「_」這個只有IE6能認,因此最後解析是_background:#000,看到的是黑色
已是最簡單和最好理解的寫法了,若是你是google進來的,我能夠很負責任的告訴你,這種方法是ok的,我測試過。
◆IE8的那段兼容7的代碼我也測試過了,在我如今的windos7測試版所帶的IE8是沒問題的,之後IE8正式版出來還管無論用就不知道了。
ps:若是你發現按我這樣寫仍是有問題的話,請查看一下你的html頭,看看<head>以前的內容是否是這樣的標準寫法
 
1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
2.
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml">
這個是如今比較規範的寫法,若是你是用dreamweaver作頁面的話,默認也是這種規範的,切記,非這種規範寫法的,兼容性不能保證。

解決IE六、IE七、Firefox兼容最簡單的CSSHack
很早就在這裏看到過解決方案,最後發現這個方案仍是很可靠的。固然,惟一的缺點就是每個屬性都要去Hack,但我在不少實踐中,只用‘修正’1-2個屬性就能夠了。
具體寫法很容易:
1. #someNode
2. {
3. position:fixed;
4. #position:fixed;
5. _position:fixed;
6. }
第一排給Firefox以及其餘瀏覽器看
第二排給IE7(可能之後的IE八、IE9也是如此,誰知道呢)看
第三排給IE6以及更老的版本看
最好的應用就是可讓IE6也「支持」position:fixed,並且,配合這個原理,能夠作到不引入JavaScript代碼(僅用IE6的expression),我這裏有一個現成的頁面,CSS以下寫:
1. #ff-r
2. {
3. position:fixed;
4. _position:absolute;
5. right:15px;
6. top:15px;
7. _top:expression(eval(document.compatMode&&
8. document.compatMode=='CSS1Compat')?
9. documentElement.scrollTop+15:
10. document.body.scrollTop+
11. (document.body.clientHeight
12. -this.clientHeight));
13. }

Css代碼
1. <style type=」text/css」>
2. #body {
3. border:2px solid #00f; /*ff的屬性*/
4. border:2px solid #090\9; /* IE6/7/8的屬性 */
5. border:2px solid #F90\0; /* IE8支持 */
6. _border:2px solid #f00; /*IE6的屬性*/
7. }
8. </style>

Html代碼
1. <div id=」body」>
2. <ul>
3. <li>FF下藍邊</li>
4. <li>IE6下紅邊</li>
5. <li>IE7下綠邊</li>
6. <li>IE8下黃邊</li>
7. </ul>
8. </div>


注:css順序不能寫錯,由於ff不認識\9,\0,_寫法,因此爲藍邊;\9是IE6,7,8的屬性,下面代碼並無重寫IE7的代碼,因此IE7下綠邊;同理,\0爲ie8屬性,至關於重寫了顏色,因此IE8下爲黃邊,_是ie6的屬性,重寫顏色爲紅邊.


div錯位/解決IE六、IE七、IE8樣式不兼容問題
IE6裏DIV錯位的問題

      採 用」FLOAT:LEFT「的DIV在IE八、IE七、都沒問題,IE6下卻向下移動,出現空白。這是由於,IE6採用的內核默認把DIV之間的距離增長 了3~5個PX,因此,試試是將下移的DIV的STYLE裏增長"margin-left:-5px;"或者更小。
解決IE七、IE8樣式不兼容問題

方法1、要在頁面中加入以下HTTP meta-tag:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

只要IE8一讀到這個標籤,它就會自動啓動IE7兼容模式,保證頁面完整展現。

方法2、針對整個網站,在IIS中加入以下描述符就能夠有相同的效果,固然這麼作範圍更廣。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=EmulateIE7">
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>


解決IE六、IE七、IE8樣式不兼容問題

如今咱們在作網頁的時刻老是要考慮一些瀏覽器之間的兼容問題。近期在作一個短信平臺的項目。在項目的開發過程當中讓我遇到了一件頭痛的事情就是IE7與IE8不兼容。後面想了許多辦法得以解決。現共享以下:

若是你的頁面對IE7兼容沒有問題,又不想大量修改現有代碼,同時又能在IE8中正常使用,微軟聲稱,開發商僅須要在目前兼容IE7的網站上添加一行代碼便可解決問題,此代碼以下:

CODE:

<meta http-equiv="x-ua-compatible" content="ie=7" />



解決firefox ie6 ie7的css樣式兼容問題

作 主題最麻煩的就是CSS樣式兼容問題,因爲各瀏覽器對ccs的不一樣解釋,形成原本IE7可正常顯示,但到了Firefox 、ie6等其它瀏覽器上,卻出現錯位、下沉等問題,只得在Firefox 、ie6 、ie7之間不停的切換調試,汗…最近又有兩款瀏覽器加入googleChrome和IE8,某個瀏覽器一統天下看來是沒但願了,只能儘可能克服兼容問題。 找到一篇解決兼容問題的文章,仍是頗有效的。

1 針對firefox ie6 ie7的CSS樣式

如今大部分都是 用!important來hack,對於ie6和firefox測試能夠正常顯示,可是ie7對!important能夠正確解釋,會致使頁面沒按要求顯 示!找到一個針對IE7不錯的hack方式就是使用「*+html」,如今用IE7瀏覽一下,應該沒有問題了如今寫一個CSS能夠這樣:

#1 { color: #333; } /* Moz */

* html #1 { color: #666; } /* IE6 */

*+html #1 { color: #999; } /* IE7 */

那麼在firefox下字體顏色顯示爲#333,IE6下字體顏色顯示爲#666,IE7下字體顏色顯示爲#999。

2 css佈局中的居中問題

主要的樣式定義以下:

body {TEXT-ALIGN: center;}

#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }

說明:

首先在父級元素定義TEXT-ALIGN: center;這個的意思就是在父級元素內的內容居中;對於IE這樣設定就已經能夠了。

但在mozilla中不能居中。解決辦法就是在子元素定義時候設定時再加上「MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 」

須要說明的是,若是你想用這個方法使整個頁面要居中,建議不要套在一個DIV裏,你能夠依次拆出多個div,只要在每一個拆出的div裏定義MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 就能夠了。

3 盒模型不一樣解釋.

#box{

width:600px;

//for ie6.0- w\idth:500px;

//for ff+ie6.0

}

#box{

width:600px!important

//for ff

width:600px;

//for ff+ie6.0

width /**/:500px;

//for ie6.0-

}

4 浮動ie產生的雙倍距離

#box{ float:left; width:100px; margin:0 0 0 100px; //這種狀況之下IE會產生200px的距離 display:inline; //使浮動忽略}

這裏細說一下block,inline兩個元素,Block元素的特色是:老是在新行上開始,高度,寬度,行高,邊距均可以控制(塊元素);Inline元素的特色是:和其餘元素在同一行上,…不可控制(內嵌元素);

#box{ display:block; //能夠爲內嵌元素模擬爲塊元素 display:inline; //實現同一行排列的的效果 diplay:table;

5 IE與寬度和高度的問題

IE 不認得min-這個定義,但實際上它把正常的width和height看成有min的狀況來使。這樣問題就大了,若是隻用寬度和高度,正常的瀏覽器裏這兩 個值就不會變,若是隻用min-width和min-height的話,IE下面根本等於沒有設置寬度和高度。好比要設置背景圖片,這個寬度是比較重要 的。要解決這個問題,能夠這樣:

#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}

6 頁面的最小寬度

min- width是個很是方便的CSS命令,它能夠指定元素最小也不能小於某個寬度,這樣就能保證排版一直正確。但IE不認得這個,而它實際上把 width當作最小寬度來使。爲了讓這一命令在IE上也能用,能夠把一個<div> 放到 <body> 標籤下,而後爲div指定一個類:

而後CSS這樣設計:

#container{

min-width: 600px;

width:e&not;xpression(document.body.clientWidth < 600? 「600px」: 「auto」 );

}

第一個min-width是正常的;但第2行的width使用了Javascript,這隻有IE才認得,這也會讓你的HTML文檔不太正規。它實際上經過Javascript的判斷來實現最小寬度。

7 清除浮動

.hackbox{

display:table;

//將對象做爲塊元素級的表格顯示

}

或者

.hackbox{

clear:both;

}

或者加入:after(僞對象),設置在對象後發生的內容,一般和content配合使用,IE不支持此僞對象,非Ie 瀏覽器支持,因此並不影響到IE/WIN瀏覽器。這種的最麻煩的

……#box:after{

content: 「.」;

display: block;

height: 0;

clear: both;

visibility: hidden;

}

8 DIV浮動IE文本產生3象素的bug

左邊對象浮動,右邊採用外補丁的左邊距來定位,右邊對象內的文本會離左邊有3px的間距.

#box{

float:left;

width:800px;}

#left{

float:left;

width:50%;}

#right{

width:50%;

}

*html #left{

margin-right:-3px;

//這句是關鍵

}

HTML代碼

<DIV id=box>

<DIV id=left></DIV>

<DIV id=right></DIV>

</DIV>

9 屬性選擇器(這個不能算是兼容,是隱藏css的一個bug)

p[id]{}div[id]{}

p[id]{}div[id]{}

這個對於IE6.0和IE6.0如下的版本都隱藏,FF和OPera做用

屬性選擇器和子選擇器仍是有區別的,子選擇器的範圍從形式來講縮小了,屬性選擇器的範圍比較大,如p[id]中,全部p標籤中有id的都是一樣式的.

10 IE捉迷藏的問題

當div應用複雜的時候每一個欄中又有一些連接,DIV等這個時候容易發生捉迷藏的問題。

有些內容顯示不出來,當鼠標選擇這個區域是發現內容確實在頁面。

解決辦法:對#layout使用line-height屬性 或者給#layout使用固定高和寬。頁面結構儘可能簡單。

11 高度不適應

高度不適應是當內層對象的高度發生變化時外層高度不能自動進行調節,特別是當內層對象使用

margin 或paddign 時。例:

<div id=」box」>

<p>p對象中的內容</p>

</div>

CSS:

#box {background-color:#eee; }

#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }

解決方法:在P對象上下各加2個空的div對象CSS代碼:.1{height:0px;overflow:hidden;}或者爲DIV加上border屬性。



注:IE都能識別*;標準瀏覽器(如FF)不能識別*;

IE6能識別*,但不能識別 !important,

IE7能識別*,也能識別!important;

FF不能識別*,但能識別!important;


1.區別IE和非IE瀏覽器
#tip {
background:blue; /*非IE 背景藍色*/
background:red \9; /*IE六、IE七、IE8背景紅色*/
}

2.區別IE6,IE7,IE8,FF
【區別符號】:「\9」、「*」、「_」
【示例】:
#tip {
background:blue; /*Firefox 背景變藍色*/
background:red \9; /*IE8 背景變紅色*/
*background:black; /*IE7 背景變黑色*/
_background:orange; /*IE6 背景變橘色*/
}
【說 明】:由於IE系列瀏覽器可讀「\9」,而IE6和IE7可讀「*」(米字號),另外IE6可辨識「_」(底線),所以能夠依照順序寫下來,就會讓瀏覽器 正確的讀取到本身看得懂得CSS語法,因此就能夠有效區分IE各版本和非IE瀏覽器(像是Firefox、Opera、Google Chrome、Safari等)。

3.區別IE六、IE七、Firefox (方法 1)
【區別符號】:「*」、「_」
【示例】:
#tip {
background:blue; /*Firefox背景變藍色*/
*background:black; /*IE7 背景變黑色*/
_background:orange; /*IE6 背景變橘色*/
}
【說明】:IE7和IE6可讀「*」(米字號),IE6又能夠讀「_」(底線),可是IE7卻沒法讀取「_」,至於Firefox(非IE瀏覽器)則徹底沒法辨識「*」和「_」,所以就能夠透過這樣的差別性來區分IE六、IE七、Firefox

4.區別IE六、IE七、Firefox (方法 2)
【區別符號】:「*」、「!important」
【示例】:
#tip {
background:blue; /*Firefox 背景變藍色*/
*background:green !important; /*IE7 背景變綠色*/
*background:orange; /*IE6 背景變橘色*/
}
【說明】:IE7能夠辨識「*」和「!important」,可是IE6只能夠辨識「*」,卻沒法辨識「!important」,至於Firefox能夠讀取「!important」但不能辨識「*」所以能夠透過這樣的差別來有效區隔IE六、IE七、Firefox。

5.區別IE七、Firefox
【區別符號】:「*」、「!important」
【示例】:
#tip {
background:blue; /*Firefox 背景變藍色*/
*background:green !important; /*IE7 背景變綠色*/
}
【說明】:由於Firefox能夠辨識「!important」但卻沒法辨識「*」,而IE7則能夠同時看懂「*」、「!important」,所以能夠兩個辨識符號來區隔IE7和Firefox。

6.區別IE六、IE7 (方法 1)
【區別符號】:「*」、「_」
【示例】:
#tip {
*background:black; /*IE7 背景變黑色*/
_background:orange; /*IE6 背景變橘色*/
}
【說明】:IE7和IE6均可以辨識「*」(米字號),但IE6能夠辨識「_」(底線),IE7卻沒法辨識,透過IE7沒法讀取「_」的特性就能輕鬆區隔IE6和IE7之間的差別。

7.區別IE六、IE7 (方法 2)
【區別符號】:「!important」
【示例】:
#tip {
background:black !important; /*IE7 背景變黑色*/
background:orange; /*IE6 背景變橘色*/
}
【說明】:由於IE7可讀取「!important;」但IE6卻不行,而CSS的讀取步驟是從上到下,所以IE6讀取時因沒法辨識「!important」而直接跳到下一行讀取CSS,因此背景色會呈現橘色。

8.區別IE六、Firefox
【區別符號】:「_」
【示例】:
#tip {
background:black; /*Firefox 背景變黑色*/
_background:orange; /*IE6 背景變橘色*/
}
【說明】:由於IE6能夠辨識「_」(底線),可是Firefox卻不行,所以能夠透過這樣的差別來區隔Firefox和IE6,有效達成CSS hack。css

相關文章
相關標籤/搜索