【发布时间】:2015-04-14 06:28:03
【问题描述】:
我希望我可以共享一些沙箱(jsfiddle),但必须从外部加载 css 才能发生错误。
您可以非常轻松地重新创建它,但它必须是远程的并且使用外部样式表。就像在 PROD 中经常一样。
HTML:
<head>
<meta charset="utf-8">
<link rel="stylesheet" type='text/css' href="style.css">
</head>
<body>
<div class='foo'>Foo</div>
<div class='bar'>Bar</div>
</body>
CSS:
.foo {
display: inline;
}
.bar {
float: right;
}
有了这个代码,你应该有这个:
↑ Foo 和 Bar 是在同一行。
但在 Chrome 中,有时你得到的是:
↑bar不在同一行。
它不会每次都发生,因此您可能需要重新加载 (ctrl+R) 多次才能看到它仅发生 一些次。
但有一些方法可以让它每次都发生(或几乎)。我至少找到了:
- 当您打开 Chrome Inspector 后,转到
elements选项卡(不会在任何选项卡上发生!) - 当页面中有
iframe时
因此,如果您添加 iframe,例如:
<div class='foo'>Foo</div>
<div class='bar'>Bar</div>
<br>
<iframe src="https://www.cia.gov/"></iframe>
你会经常遇到这个错误。
请注意,例如 <style></style> 内部包含 css 时不会发生这种情况。
我发现远程服务器 + 外部 css + iframe + 检查器之间的共同因素是所有这些都使页面计算时间更长。
您对为什么会发生这种情况以及如何防止这种情况有任何想法吗?
编辑:
我不希望 另一种方式 对齐两个元素。我想要的是了解原因。
我制作了这个快速的 GIF,显示如果您从检查器中删除浮动,然后再次返回,则错误已解决,Bar 将首先到达应有的位置。
【问题讨论】:
-
为什么一个是浮动的,另一个是内联的?为什么不
float: left/float: right? -
先放浮标。
-
因为这是一个真实用例的抽象,它是我能找到的最简单的标记来显示错误。
标签: javascript html css google-chrome iframe