如何垂直居中文本?

9

我一直在努力让我的内容div垂直居中,但是一直卡住了。该容器包含一个带标题的div和一个带内容的div。

我尝试了以下元素:

vertical-align: middle;

同时我也在尝试调整显示和位置,但是没有成功。

当前的CSS如下:

.content-wrapper {
  height: 100vh;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: left;
  text-align: left;
  -ms-flex-flow: column nowrap;
  flex-flow: column nowrap;
  color: #000;
  font-family: Montserrat;
  text-transform: none;
  -webkit-transform: translateY(40vh);
  transform: translateY(40vh);
  will-change: transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transition: all 1.7s cubic-bezier(0.22, 0.44, 0, 1);
  transition: all 1.7s cubic-bezier(0.22, 0.44, 0, 1);
  padding-top: 10%;
  padding-right: 25px;
  padding-left: 30px;
  float: right;
  width: 35%;
  background-color: #f0f7fc;
}

Flex版本会将内容垂直居中,但也会水平居中。我需要在垂直居中的容器中左对齐文本。 - Petey
如果您使用flex,为什么不查看属性的含义,以便了解它的工作原理,您可以轻松地将其垂直居中,并使文本左对齐。 - Pete
1个回答

31

Flexbox

Flexbox 可以让您在没有固定 heightdiv 的情况下垂直对齐文本。现在,所有现代浏览器都支持它。

查看我的其他答案 以了解 Flexbox 的所有问题和解决方法。其中大部分是针对 Internet Explorer 的。

display: flex;
align-items: center;

div {
  width: 50px;
  height: 100px;
  display: flex;
  align-items: center;
  border: 1px solid black;
}
<div>
  Test
</div>

行高

如果你知道外部 div高度,你可以使用 行高

height: 100px;
line-height: 100px; /* same value as height */

div {
  width: 50px;
  height: 100px;
  line-height: 100px;
  border: 1px solid black;
}
<div>
  Test
</div>

display: table-cell

display: table-cell 是另一种很好的选择,可以在不知道 div 的高度的情况下进行垂直对齐。它也适用于旧版浏览器(除了 Internet Explorer 7)。

display: table-cell;
vertical-align: middle;

div {
  width: 50px;
  height: 100px;
  display: table-cell;
  vertical-align: middle;
  border: 1px solid black;
}
<div>
  Test
</div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接