【发布时间】:2011-06-21 17:43:35
【问题描述】:
我正在尝试创建一个布局,其中 div 之间的垂直间距是像素完美的。到目前为止,我已经排除了几乎所有的大网格系统(960.gs,蓝图),因为它们根本没有解决垂直间距的问题。使用它们,设置 div 之间垂直间距的唯一方法是使用 body { line-height } 属性并使用它来操作 div 间距。我不会称其为解决方案,因为它会破坏您的模板,取决于字体系列,并且不允许您为不同的 div 使用不同的间距。
我发现唯一支持垂直间距的网格系统是 Golden Grid,它不使用 body { line-height },但有自己的 .clear { height: 5px } 垂直间距。
我的问题是,无论我如何尝试,我都无法在 HTML5 中使用间距。我说的是垂直排列的图像,它们之间没有间隙。在 XHTML 过渡模式下,一切正常,图像完美对齐,但在 HTML5 模式下,它们之间存在垂直间隙。间隙在 Chrome 中为 2px,在 Firefox 中为 2-3 px,在行之间交替。我认为在 HTML5 模式下使用的每个网格系统都是如此。我不知道用纯 HTML5 编写这段代码的最佳方式是什么,所以我只是尝试了网格系统。垂直间隙存在于 960.gs 中,蓝图中也存在。
我发现的一个解决方案可能是设置 body { line-height: 0 } 并在每个印刷标记中定义 line-height。但我不明白为什么这么简单的情况需要这么糟糕的破解:垂直排列的图像。为什么 HTML5 模式下的浏览器与 XHTML 过渡模式下的浏览器不同?
在这里,我有相同的页面,没有任何变化,只是文档类型。 XHTML 在每个浏览器中都是像素完美的,而 HTML5 则存在差距,并且因浏览器而异。
使 HTML5 示例像 XHTML 过渡示例一样工作的最佳方法是什么?
更新:如果我包含 img { display: block; 的话,三十点回答了问题。 HTML5 版本的行为与 XHTML 过渡版本完全相同。谢谢三十点!
但是在关闭这个帖子之前,有人可以向我解释一下为什么会这样:
- 为什么所有浏览器在 HTML5 模式下的行为都不同,并且在未指定为 display: 块时,img 元素之间的垂直间隙也不同。在浏览器中查看上面 html5 链接的比较站点,它会因浏览器而异。它们之间的间隙在 2 到 4 像素之间。
- 为什么 XHTML Transitional 不需要这个技巧
- 为什么 XHTML Strict 也会产生垂直间隙
- 使用 img { display: block; 是否安全? } 在 reset.css 表中?
【问题讨论】: