IE8 兼容模式(或者可能是 IE7)与 css 相对位置相关的回流错误

发布于 2024-10-18 08:10:30 字数 1570 浏览 2 评论 0原文

有人对休闲行为有任何评论吗?
我已经在 IE8 上以兼容模式对其进行了测试,但我不确定 IE7 的真实行为。 任何其他浏览器都表现正常。

当文档重排时,任何相对定位的图像都会丢失其坐标。
如果将文本添加到段落中,则会出现此行为,但如果添加更多段落则不会出现此行为!

看看这个:

<!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" xml:lang="en" lang="en">
<head>
    <title>Bad Behaviour</title>
    <script type='text/javascript'>
        window.onload = function(){
            document.getElementById('command').onclick = function(){
                var p = document.getElementById('paragraph');
                p.innerHTML = p.innerHTML + p.innerHTML;
                return false;
            }
        }
    </script>
</head>
<body>
    <a id='command' href='?'>command</a>
    <p id='paragraph'>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation
    ullamco laboris nisi ut aliquip ex ea commodo consequat.
    Duis aute irure dolor in reprehenderit in voluptate
    velit esse cillum dolore eu fugiat nulla pariatur.
    Excepteur sint occaecat cupidatat non proident,
    sunt in culpa qui officia deserunt mollit
    anim id est laborum
    </p>
    <div style='background-color:black;'>
        <img src='success.png' style='position:relative; '/>
    </div>
</body>
</html>

看看回流后图像如何显示?

Has anyone any comments about fallowing behaviour?
I've tested it on IE8 in compatibility mode, but i'm not sure about real IE7 behaviour.
Any other browsers behave normally.

When document reflows, any relative positioned images loose their coordinates.
The behaviour is seen if text is added to paragraph, but not if more paragraphs are added !

See this:

<!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" xml:lang="en" lang="en">
<head>
    <title>Bad Behaviour</title>
    <script type='text/javascript'>
        window.onload = function(){
            document.getElementById('command').onclick = function(){
                var p = document.getElementById('paragraph');
                p.innerHTML = p.innerHTML + p.innerHTML;
                return false;
            }
        }
    </script>
</head>
<body>
    <a id='command' href='?'>command</a>
    <p id='paragraph'>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation
    ullamco laboris nisi ut aliquip ex ea commodo consequat.
    Duis aute irure dolor in reprehenderit in voluptate
    velit esse cillum dolore eu fugiat nulla pariatur.
    Excepteur sint occaecat cupidatat non proident,
    sunt in culpa qui officia deserunt mollit
    anim id est laborum
    </p>
    <div style='background-color:black;'>
        <img src='success.png' style='position:relative; '/>
    </div>
</body>
</html>

See how image is displayed after reflow ?

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

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

发布评论

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

评论(1

我也只是我 2024-10-25 08:10:30

我不知道为什么 IE7 及更低版本会这样做,但解决方案是给容器

<div style='background-color:black;'>

一个相对位置,

<div style='background-color:black;position:relative;'>

这解决了这个(以及许多其他)问题。事实上,除非您有理由不这样做,否则最好为所有容器提供 IE 的相对位置。

I have no earthly clue why IE7 and below do this, but the solution is to give the container

<div style='background-color:black;'>

a relative position,

<div style='background-color:black;position:relative;'>

which solves this (and many other) problems. In fact, unless you have a reason not to, it's best to give all your containers relative position for IE.

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