2011-03-22 48 views
2

我一直在努力让div容器元素与它的子内容一起居中,并开始变得令人沮丧。直列式造型我有格如下:IE8 vs IE7 html格式化

<body id="body1" style="vertical-align: middle; text-align: center"> 
     <div id="container" style="position: relative; width: 910px; margin: 0px auto;"> 
      <!---Child Content--->  
    . 
    . 
. 
</div> 
    </body> 

当这些设置在IE7被视为,在div容器抵销向右作为下面PIC所示:

enter image description here

为了居中我来补充其位置的风格定义正确的属性,以推动其向中心:

<body id="body1" style="vertical-align: middle; text-align: center"> 
     <div id="container" style="position: relative; right: 425px; width: 910px; margin: 0px auto;"> 
<!---Child Content--->  
     . 
     . 
    . 
     </div> 
    </body> 

此修复为IE7问题:

enter image description here

预见然而,当施加的格式是关闭的IE8,Firefox,铬等上面的第二造型格式:

火狐(在Chrome和IE8相同的行为)

enter image description here

希望这是一个简单的修复,我不明白为什么IE7不同对待的造型。任何帮助表示赞赏。

UPDATE:

@丹哈迪,漂泊 - 如果我能同时接受你的答案我会的,谢谢你们它的工作。这是非常奇怪的行为,我认为现在我不必迎合特定的浏览器。

回答

1

如果width属性后把!ie7,它将被比IE 7其他浏览器忽略:

right: 425px !ie7;

对于这更好的说明,请参阅这太问题和接受的答案:

Bang IE7 - What does it mean?

我让你来决定这是否过于“哈克”,但它在堆栈溢出的CSS使用。

+0

我真的很喜欢速记符号,并尝试使用它,当我可以。 – kingrichard2005 2011-03-22 23:15:22

2

这铺平了道路,修复的方式,但不是严格意义上的解决办法:

您可以添加条件浏览器特定语句到你的HTML代码:

http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

你可以做什么基本上是添加评论的下面到您的页面:

<!--[if IE 7]> 
    <link rel="stylesheet" type="text/css" href="conditional_ie_7_stylesheet.css" /> 
<![endif]--> 

在这些标签之间,你可以添加必要的样式来抵消th特定浏览器上的问题。

正如我所说,这不能解决您的CSS问题,但它提供了一个替代方案。

+0

感谢您的帮助和资源丹尼尔,我会保持这种方式和方便的链接。 – kingrichard2005 2011-03-22 22:36:13

+0

在阅读了Adrift提供的链接后,我发现这种特定的方法虽然解决了问题,但被认为是非标准的破解。我想尝试坚持标准,只是个人风格,所以我可能会改变你提供的格式。 – kingrichard2005 2011-03-22 23:19:09

+0

我想我的解决方案和接受的解决方案之间的区别是 - 如果您需要更改大量样式,则可以像上面那样在特定样式表中收集它们。如果你只是改变一两件小事,那么接受的解决方案也是一样的! – 2011-03-23 08:33:48

0

当您从div中删除position: relative时,能够在原始问题中使html正常工作在IE7中。也有机会在html/css内容中引发相互作用,导致潜在的问题,所以如果这不能解决问题,你可以发布你的HTML/css内容,它可以在截图中显示问题很有帮助。

+0

感谢Aliester,代码实际上是一个将应用于多个页面的模板,其中一个要求是让容器div相对定位。 – kingrichard2005 2011-03-22 22:40:09