国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

10個HTML和CSS代碼修正IE6問題的方法

2024-07-11 08:22:00
字體:
來源:轉載
供稿:網友

我們知道,ie6可能過不了多久就會消失了,但是我們還能繼續支持這個瀏覽器并且避免hack和有約束的css嗎?這里是10個使用有效的html和css代碼來修正ie6主要問題的方法。

1. 使用doctype

你應該在一直每個html文件的頭部都使用doctype,并且我們推薦使用strict 版本,比如:

1
<!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd">

或者,對于xhtml使用:

1
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

你需要處理的最棘手的事情就是ie6進入quirks模式——它已經夠詭異了。

2. 設置position: relative

將一個元素設置為”position:relative”可以解決很多問題,特別是你曾經遇到隱藏的或對齊詭異的盒子。顯然,你需要非常小心點兒,因為絕對定位的子節點可能會因此重新定位。

3. 將浮動元素設置為display:inline

具有margin屬性的浮動元素可能引起著名的ie6雙倍margin問題,比如,你為一個元素指定margin-left為5px,但是ie6中實際上卻表現為10px。”display:inline”將解決這個問題,盡管這不是必須的,你的css仍然是有效的。

4. 將一個元素設置為haslayout

很多ie6(和ie7)的渲染問題可以通過設置元素的haslayout來解決。 這是一個ie內部屬性(ie隱藏的,更多關于haslayout的資料,可以參閱這里),用來確定相對于其他元素,內容是如何布局和定位的。如果你需要設置一個inline元素(比如一個鏈接)為block元素,或者是應用透明效果,設置haslayout也可能是必須的。

最簡單的設置haslayout的方法是為css設置一個高度或寬度(zoom也可以用,但是zoom并不是css標準的一部分)。我們推薦設置實際尺寸,但是問題是這是不現實的,你可能需要使用”height:1%”。如果父元素并沒有設置高度,該元素的實際高度并不受影響,而且這個時候haslayout已經被啟用。

5. 修正重復文字bug

復雜的布局可以觸發在浮動元素的最后一些字符可能出現在出現在清除元素下面的bug。這里有幾個解決方法,有些是完美的,但是做一些反復試驗也是必須的:

  • 確保所有的元素使用”display:inline;”
  • 在最后一個元素上使用一個”margin-right:-3px;”
  • 為浮動元素的最后一個條目使用一個條件注釋,比如:
    1
    		<!--[if !ie]>put your commentary in here...<![endif]-->
  • 在容器的最后元素使用一個空的div(它也有必要設置寬度為90%或類似寬度。)

6. 在可點擊和懸停的元素上只使用<a>標簽

ie6只認識對a標簽的css hover效果。

你也可以在基于javascript的組件內使用他們來控制,以使他們保持鍵盤的可操作性。是有一些可替代的選擇,但是<a>標簽比其它方案更可靠。

7. 使用!important 或高級選擇器來區分ie6

不使用傳統hack或在額外文件中的條件css的方法,寫出特別針對ie6的可行的代碼也還是有可能的。比如最小高度可以通過這段代碼來定義:

12345
#element {	min-height: 20em;	height: auto !important; /* 所有瀏覽器都理解這段代碼 */	height: 20em; /* ie6 錯誤的使用這個值 /*}

ie6 不理解min-height并錯誤的用20em覆蓋”auto”高度,但是,如果內容需要更多的空間的話,它會自動增加高度。

另外一個可選的方法是使用高級選擇器,比如e.g.

123456789
#element {	min-height: 20em;	height: 20em;} /* ie6 無視下面的代碼*/#element[id] {	 height: auto;}

8. 避免百分比單位

百分比會把ie搞糊涂的。除非你可以確切的控制每一個父元素的大小,才可能做到最佳預防。你可以通過!important在其他瀏覽器中繼續使用百分比,比如:

1234
body {	margin: 2% 0 !important;	margin: 20px 0; /* ie6 only */}

9. 盡早測試并不斷測試

不要等到你的網站或應用完成了才測試ie6;這樣的話問題可能更糟糕,而且會花更多時間來修正。如果你的網站能夠在firefox和ie6中正常運行,那么一般在其它瀏覽器就不會有問題。

10. 重構你的代碼

經常發生的事情是,修正bug要比重新考慮一個布局問題要花更長的時間。對html做些小改動和一些簡單的css常常更有效。這可能意味著你要放棄完美的代碼,但是會出現較少的長期問題而且將來你會很清楚如果處理這些可能出現的問題。

神飛感言,雖然ie8并沒有從根本上改變ie,但是它對css標準的支持的確有非常大的改觀。但是即便如此,我們依然不能寄希望與ie8的普及,這是一件很不靠譜的事情,頑固的ie6用戶未必會接受ie8。所以我們最近一年半載還是不能無視ie6。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 偏关县| 金湖县| 怀柔区| 南投市| 松潘县| 那曲县| 海晏县| 凤翔县| 德钦县| 绥中县| 田林县| 股票| 涿鹿县| 花莲市| 吴忠市| 达州市| 开江县| 县级市| 天台县| 黔江区| 册亨县| 高安市| 丰县| 祥云县| 洪雅县| 中超| 兴和县| 靖安县| 岳阳市| 宁城县| 抚顺市| 五寨县| 阜康市| 蓬安县| 长岛县| 利津县| 大荔县| 兰考县| 蓝田县| 乾安县| 巩义市|