为什么

之间的垂直边距不相等?和


IE7 中崩溃

发布于 2024-09-03 05:08:10 字数 916 浏览 8 评论 0原文

也许我遗漏了一些东西,但我无法从我所知道的任何 IE 错误中解释这一点。为什么在此示例中


元素的边距在符合标准的浏览器(即 FF3、IE8 等)中按预期折叠,但不折叠在IE7(包括IE8兼容模式)下?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
    <title>IE7 Box Model</title>

    <style type="text/css">

        p {
            border: 1px solid #00f;
            background-color: #fefecb;
            margin: 20x 0 20px 0;
            }

        hr {
            margin: 20px 0 20px 0;
            }

    </style>

</head>
<body>
    <p>
        box 1
    </p>
    <hr />
    <p>
        box 2
    </p>
    <hr />
    <p>
        box 3
    </p>

</body>
</html>

Perhaps I am missing something, but I can't explain this from any IE bug I know of. Why in this example do the margins of the <p> and <hr> elements collapse as expected in standards compliant browsers (i.e. FF3, IE8, etc) but not in IE7 (including IE8 compatibility mode)?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
    <title>IE7 Box Model</title>

    <style type="text/css">

        p {
            border: 1px solid #00f;
            background-color: #fefecb;
            margin: 20x 0 20px 0;
            }

        hr {
            margin: 20px 0 20px 0;
            }

    </style>

</head>
<body>
    <p>
        box 1
    </p>
    <hr />
    <p>
        box 2
    </p>
    <hr />
    <p>
        box 3
    </p>

</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜是你 2024-09-10 05:08:11

这与 hasLayout 错误有关。以下是相关性的摘录:

边距崩溃

hasLayout MS 属性影响
框之间的边距折叠
及其后代。根据
指定盒子的上边距,没有
顶部填充并且没有顶部边框应该
与其上边距折叠
第一个流入的块级子级:

在 IE/Win 中,当
box有布局: 好像有布局
防止孩子的边缘
从容纳盒中伸出。
此外,当 hasLayout 为 true 时,
要么在容器上,要么在
子项,其他错误边距
计算结果显示:

最好的解决方案很简单,但对现有的可能是激烈的设计:将块元素的边距设置为 0 并使用填充,以便在浏览器中保持一致。衬垫不会塌陷。

This is related to the hasLayout bug. Here's an extract of relevance:

Margin collapsing

The hasLayout MS-property affects the
collapsing of margins between a box
and its descendants. According to the
spec the top margin of a box with no
top padding and no top border should
collapse with the top margin of its
first in-flow block-level child:

In IE/Win this never happens when the
box has layout: it seems that layout
prevents the margins of the children
to stick out of the containing box.
Moreover when hasLayout is true,
either on the container or on the
child, other wrong margins
computations show up:

The best solution is simple but maybe drastic on existing designs: set margins on block elements to 0 and use padding instead so that it's consistent across the browsers. Paddings won't collapse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文