如何让我的文本在 DIV 内垂直对齐?

How can I make my text be vertically aligned within a DIV?

我有这个代码:

<div style="font-size: 1.5rem; width: 20%;vertical-align: middle;" >ABC</div>

当我查看页面时,它显示如下。我添加了 x 以显示 DIV:

的边界
xxxxxxxxxxxxxxx
x             x
x ABC         x
x             x
x             x
xxxxxxxxxxxxxxx

似乎垂直对齐没有做任何事情。

有没有办法让ABC上下的space一样。我看到了 CSS 个表格和 Flex。有什么方法可以使用标准 CSS 来实现,还是我需要使用 CSS 表格或 Flex 之类的东西?

习惯了display属性像这样

display:table-cell;

-

<div style="font-size: 1.5rem;border:solid 1px red; height:100px; width: 20%;display:table-cell;vertical-align: middle;" >abc</div>

有一种方法可以在没有 display: table;display: flex 的情况下解决这个问题。这有点棘手,但工作正常。

首先,您的截图不能像这样工作,因为 vertical-align 属性 仅适用于内联和 table-cell 框。 <div> 默认为 display: block,因此超出范围。

那么,我们能做什么呢?这个:

.vertical-align-content
{
  height: 150px;
  background-color: silver;
}

.vertical-align-content > span,
.vertical-align-content::before
{
  display: inline-block;
  vertical-align: middle;
}

.vertical-align-content::before
{
  height: inherit;
  content: "";
}
<div class="vertical-align-content">
  <span>Hello</span>
</div>

此解决方案是在 .vertical-align-content 中放置一个伪元素,其高度继承了父容器。伪元素和 <span> 都设置为 display: inline-block,因此可以使用 vertical-align 定位。最大的项目(伪元素)将强制跨度以自身为中心垂直对齐。

你可以试试这个:

<div style="display: table; height: 300px; overflow: hidden;display: table-cell; vertical-align: middle;">abc</div>

DEMO HERE

为什么不直接使用行高呢?

Fiddle: http://jsfiddle.net/SVJaK/2757/

<div class="test">ABC</div>

CSS:

.test {
   border: 1px solid green;
   width: 200px;
   line-height: 200px;
}