2012-08-11 89 views
0

考慮以下的簡單示例代碼:與最小寬度兒童事業部IE9 HTML元素調整大小的Bug

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" style=" height:100%; width:100%; background:yellow; " > 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>IE9 Min-Width Problem</title> 
</head> 
<body style=" width:100%; height:100%; margin:0; background:green;"> 
<div style=" position:relative; min-width:300px; max-width:100%; margin:auto; background:red; "> 
<div style=" position:relative; min-width:0; max-width:600px; margin:auto; padding:10px; "> 
<div style=" position:relative; width:100%; height:600px; background:blue; "> 
Page contents go here. 
</div><!-- closes content --> 
</div><!-- closes inner-wrapper --> 
</div><!-- closes outer-wrapper --> 
</body> 
</html> 

我的網站使用類似的代碼本,實現了最小和最大寬度的流體頁面佈局,它在每個瀏覽器中都能很好地工作,除了驚喜的Internet Explorer。出於某種原因,當您第一次加載頁面並將其縮小(或放大)時,HTML元素不會重新調整大小,因此您立即得到一個水平滾動條並且HTML背景在右側可見。但是,如果刷新頁面,則問題完全消失,IE的行爲與其他瀏覽器類似。 僅在頁面的第一次初始加載時出現此問題,因此如果刷新頁面,則必須離開並返回到該網站。

請注意,這似乎只發生在網頁在服務器上時。如果你在本地查看html文件,這個錯誤不會讓它變得醜陋。既然如此,我已經自由地將這段代碼上傳到我的測試服務器,以便任何人都能夠幫助我弄清楚發生了什麼。

http://pace-testing.net84.net

如果任何信息可幫助查看網頁,我將不勝感激。這包括(1)解決方案(2)解決方法或(3)實現我的目標的更好方法。如果您有任何問題,請告知我,因爲我會經常查看這篇文章(我正在把這張頭髮拉出來,所以我急於修復它)。

其他詳細信息:我在Windows 7 32位上運行Internet Explorer 9.0.8。由於XHTML 1.0嚴格Doctype,瀏覽器處於Internet Explorer 9標準模式。

+1

我不除非我打開兼容模式(在地址欄中打破了頁面圖標),否則IE9/W7x64中不會出現這種情況。也許你有沒有打開呢? – 2012-08-11 13:32:12

+0

你是對的安德魯,這是一個有用的信息,謝謝。由於某些原因,IE似乎在這個頁面上強制兼容模式。當我關閉它時,它似乎工作正常,但是當我刪除站點的compat模式的偏好並回到它時,它仍會進入此模式。有誰知道我可以如何解決這個問題?爲什麼它這樣做是compat模式?我如何指定它永遠不會進入compat模式?對不起,但我對IE很少有經驗。雅知道,因爲這是魔鬼。 :) – Scopace 2012-08-11 13:41:18

+0

@Scopace:你好,我是,有完全相同的問題,不僅與最小寬度,但也與顯示:表。正如你在旅遊帖子中所說的那樣,當我在本地嘗試頁面時,它可以很好地工作,當來自服務器的時候,這些風格的atribs都不適用。你有沒有找到解決你的問題? Thanx – 2012-08-24 13:15:19

回答

1

除非我打開兼容模式(地址欄中斷開的頁面圖標),否則我不會在IE9/W7x64中看到這種情況。也許你有沒有打開呢?

你似乎對頁面第二行的主要錯字:

<html xmlns="http://www.w3.org/1999/xhtml" style=" height:100%; width:100%; background:yellow; " > 

什麼的style做在那裏?

這是一個好主意,檢查您的網頁與validator.w3.org,因爲它發現這樣的事情。 (還有其他的驗證器。)

+0

我知道,它沒有驗證,但我只是很快把這個例子放在一起,並想要內聯樣式。我習慣於單獨的css文件,但事實是,它的工作原理,即使它不驗證。只要說一句,我的實際網站不會犯這個錯誤。無論如何,你的評論(屬於答案)已經告訴我我需要知道什麼,因此我不能夠感謝你。我相信對IE兼容模式的一些研究給了我解決方案(compat模式的元標記)。 – Scopace 2012-08-11 13:53:38

+0

我說得太快了!我已經爲標記添加了,儘管它不再處於compat模式,但它仍然呈現不正確。你還有什麼? – Scopace 2012-08-11 13:58:05

+1

那麼,如果它不是有效的HTML,你不應該指望它能夠工作;)我只是堅持在一個'