披着羊皮的狼

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费额度!

Roger Johansson 有一篇简洁的快速提示风格文章,介绍了如何通过将 html 元素设置为 display: table;,并将 body 元素设置为 display: table-cell; 以及 vertical-align: middle; 来垂直和水平居中页面内容。 请参阅完整代码以了解实现方式 文章中。

我同意这种方法。适用于所有现代浏览器和 IE 8 及更高版本。

但我不同意这一点

我看到有人说使用这些 CSS 属性创建“CSS 表格”并不比在 HTML 中使用表格更好。我不同意这种说法。

使用 CSS 更改元素的显示属性不会更改底层 HTML 的语义——它只会更改元素的显示方式。它不会将任意 HTML 元素转换为表格、th 或 td 元素。

对于这个小小的居中技巧,使用 display: table; 没什么大不了的。它会影响元素的显示方式,保持语义,一切正常。但是,当您开始使用 CSS 表格进行布局时,您将进入一个**依赖源顺序的布局**的世界。需要位于左上角的元素需要在标记中排在首位。需要位于右下角的元素需要在标记中排在最后。就像普通的表格一样。您不会使用任何其他定位来强制它们放置在不同的位置,因为那样的话,一开始就没有必要使用 CSS 表格。

浮动,尽管它们可能很糟糕,但没有这个问题。您可以交换浮动值并完全更改布局,而不管源顺序如何。CSS3 弹性盒模型,尽管不受支持,但允许您使用序数组值控制页面位置。

使用一堆 div(甚至花哨的 HTML5 语义元素)并强制它们表现得像表格一样,就像披着羊皮的狼。而且是的,我们之前走过这条路 =)