webkit rtl绝对位置错误?

发布于 2024-11-15 07:52:09 字数 642 浏览 4 评论 0原文

html:

<div id="outer">
    <div id="inner">
    </div>
</div>

css:

#outer {
    position: absolute;
    left: 100px;
    top: 0;
    width: 100px;
    height: 100px;
    direction: rtl;
    background-color: blue;
}
#inner {
    display: inline-block;
    position: absolute;
    width: 50px;
    height: 50px;
    background-color: yellow;
}

在 Chrome 中,黄色框位于蓝色框之外。

在其他浏览器(firefox、IE)中,黄色框位于蓝色框内。

这是 webkit 的 bug,为什么?

jsfiddle 上的测试用例: http://jsfiddle.net/QF9tT/

html:

<div id="outer">
    <div id="inner">
    </div>
</div>

css:

#outer {
    position: absolute;
    left: 100px;
    top: 0;
    width: 100px;
    height: 100px;
    direction: rtl;
    background-color: blue;
}
#inner {
    display: inline-block;
    position: absolute;
    width: 50px;
    height: 50px;
    background-color: yellow;
}

In Chrome, the yellow box is outside of the blue box.

In other browers(firefox, IE), the yellow box is inside the blue box.

Is it a bug of webkit, and why?

a test case on jsfiddle:
http://jsfiddle.net/QF9tT/

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

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

发布评论

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

评论(1

七色彩虹 2024-11-22 07:52:09

您只需从 #inner 中删除 display: inline-block 即可。

参见: http://jsfiddle.net/QF9tT/1/

< code>position:absolute 将强制计算出 blockdisplay 值,因此 display: inline-block 不应该执行任何操作无论如何:

http://www.w3.org/TR/CSS21/visuren.html #dis-pos-flo

否则,如果“position”具有值
“绝对”或“固定”,该框是
绝对定位,..,并显示
按下表设置。

[内联块=块]

但是,在这种情况下,这种行为在 Chrome 中似乎是有问题的。

您应该考虑在此处提交报告:http://code.google.com/p/chromium /issues/list

再说一遍,这个问题很容易解决:不要在绝对定位的元素上指定无意义的 display 值。

You should simply remove display: inline-block from #inner.

See: http://jsfiddle.net/QF9tT/1/

position: absolute will force a computed display value of block, so display: inline-block should not be doing anything whatsoever:

http://www.w3.org/TR/CSS21/visuren.html#dis-pos-flo

Otherwise, if 'position' has the value
'absolute' or 'fixed', the box is
absolutely positioned, .., and display
is set according to the table below.

[inline-block = block]

But, it appears in this case that this behaviour is buggy in Chrome.

You should consider filing a report here: http://code.google.com/p/chromium/issues/list

Then again, the issue is easy to fix: don't specify a nonsensical display value on an absolutely positioned element.

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