开发者

IE6 and IE7 do not handle margins properly on elements with height property

I have an h2 within a div. Both of them have borders. The h2 has a height attribute and a margin. When I view my page in IE6, IE7, or IE8 compatibility view, the h2 is all the way at the top of the div as if the margin is 0. However, if I view it in any other browser, the h2 has some space above it like I would expect.

Can anyone tell me why this is happening and what to do about it. I am trying to make the page render in IE like it does in Firefox, without setting the height to auto.

Here is a page you can test to show the problem. Try viewing it in IE6 or IE7, then try it in any other browser:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4开发者_运维问答/loose.dtd">
<html><head>
<title>CSS margin test</title>
<style type="text/css">
div {
    border: solid blue 1px}
h2 {
    height:33px; margin:80px 0 0; border: solid red 1px}
</style>
</head>
<body>
<div>
    <h2>test</h2>
</div>
</body></html>


Use the "zoom: 1" CSS property to force proper layout in IE. This is a common solution for IE bugs. Putting it on the div fixes your issue:

div {
    border: solid blue 1px;
    zoom: 1;
}

A general-purpose fix is also possible:

* {
    zoom: 1;
}

Google "hasLayout" for more info.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜