居中:最酷的新方法 VS 最酷的老方法

Avatar of Chris Coyier
Chris Coyier

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

这不是一个关于居中事物的综合指南。 我们有这个!

这只是一个关于新旧的小观察。 在 CSS 中,关于居中比较棘手的事情之一是,当您需要垂直和水平居中,而您不知道要居中内容的宽度或高度时。 垂直居中比水平居中更棘手。

信不信由你,即使在 IE 8 中也有一种方法可以做到这一点。诀窍是利用 display: table; 以及表格的另一个属性 vertical-align: middle;,它可以用于垂直居中。

假设您只想将一个句子完美地居中在浏览器窗口的中间

...
<body>
  <span>
    Centered vertically and horizontally.
  </span>
</body>
...

您可以像这样做到:

html, body {
  margin: 0;
  height: 100%;
}
body {
  display: table;
  width: 100%;
}
body > span {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}

这可能是 CSS 居中之书中最古老的技巧。 这是 在 IE 8 中工作的例子

如今我们有了更现代的布局方法。 Flexbox! CSS Grid!

以下是使用最现代方法完成同样任务的方法

body {
  display: grid;
  height: 100vh;
  margin: 0;
  place-items: center center;
}

我们甚至不需要在那里触摸 span! 事实上,这太前沿了,以至于支持 CSS Grid 的 Microsoft Edge 还不支持 place-items。 您需要使用 align-items: center;justify-content: center; 来代替。

一直在前进。