2012-08-11 90 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,你不应该指望它能够工作;)我只是坚持在一个'