使用百分比宽度/高度元素居中

Avatar of Chris Coyier
Chris Coyier

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

如果您知道元素的确切宽度/高度,您可以使用 这个经典技巧 将其轻松地居中到其父元素的正中间:将顶部和左侧设置为 50%,并将负边距设置为元素宽度和高度的一半。如果您知道要居中元素的宽度和高度,这很好,但如果它们是百分比呢?

您可能会认为可以使用负百分比边距。这对于水平边距有效,但边距基于宽度(即使是垂直边距也是如此),因此当您尝试使用负顶部边距将内容拉入适当位置时,它会失效。

这里有一个小技巧 涉及使用“幽灵”伪元素和 inline-block/vertical-align,非常巧妙。但这要求您要居中的元素为 inline-block,这并不是一个常见的场景。更有可能的是您正在尝试将模态窗口居中。随着小型屏幕/响应式设计成为大趋势,您很可能希望您的对话框具有百分比宽度(或者像最大宽度一样具有未知宽度)。

有一种方法!我在 Codrops 的 Mary Lou 的文章/演示 Nifty Modal Window Effects 中看到了这个技巧。

不要使用负边距,而要使用负 translate() 转换

.center {
  position: absolute;
  left: 50%;
  top: 50%;
  
  /*
  Nope =(
  margin-left: -25%;
  margin-top: -25%;
  */

  /* 
  Yep!
  */
  transform: translate(-50%, -50%);
  
  /*
  Not even necessary really. 
  e.g. Height could be left out!
  */
  width: 40%;
  height: 50%;
}

使用您当前需要的前缀。

就这样

Check out this Pen!