【发布时间】:2014-10-10 20:47:36
【问题描述】:
在 HTML 5 文档中,我尝试使用 float:left 并排放置两个前置元素,如下所示:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Pre and Float Test</title>
</head>
<body>
<pre style="float:left; margin-right:1em"> 1
2
3
4</pre>
<pre>The quick
red fox
jumped over
the lazy brown dog.</pre>
</body>
</html>
Internet Explorer 9 以我期望的方式呈现 HTML,左侧 pre 元素的顶部与另一个 pre 元素的顶部对齐,如下所示:
但是,Google Chrome 和 Firefox 都在呈现文档时,其 pre 向左浮动,比另一个 pre 低一行,如下所示:
鉴于 Internet Explorer 的历史,我不得不相信 Chrome 和 Firefox 正确地遵循了标准。更有趣的是,当我将 pre 元素替换为 div 元素并在每行末尾使用 <br> 标签时,如下所示:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Pre and Float Test</title>
</head>
<body>
<div style="float:left; margin-right:1em"> 1<br>
2<br>
3<br>
4</div>
<div>The quick<br>
red fox<br>
jumped over<br>
the lazy brown dog.</div>
</body>
</html>
左侧 div 不向下移动:
为什么标准要求左前下移?如何阻止 Chrome 和 Firefox 将左前向下移动?我知道如何使用 CSS "position:relative; top:-1em" 来解决它,但这似乎是一个等待破解的黑客。有没有更好的方法来阻止 Chrome 和 Firefox 将左前向下移动?
【问题讨论】:
-
我在 Firefox 和 Chrome 上没有这个问题。您能指定您使用的是哪个版本吗?
-
另外,你为什么要使用
<pre>来布局页面,而你应该使用<div>、<span>等等。 -
因为我会将代码放在右边的 pre 元素中,并且 pre 尊重我在代码中的空白。
-
你看CodeMirror还是故意重新发明轮子?
-
这个项目我不能用JavaScript,CodeMirror是用JavaScript实现的。