垂直居中没有下行的文本?

时间:2013-04-29 06:10:26

标签: html css html5 css3

假设我有一行全部大写的文本(例如text-transform: uppercase)。我希望将此文本垂直居中于div。我不需要担心多行文字。

有几种方法可以在CSS中垂直居中(例如,检查this)。不幸的是,所有这些方法都考虑了descenders,而且我的文本没有任何下降,因此它没有完全居中。基本上,我想将文本的一部分从基线到中心高度居中。

有没有办法垂直居中一行大写文字?现在我正在使用position: relative并手动调整它直到它居中(例如使用top: 2px),但这显然不是一个强大的解决方案(它非常依赖于浏览器呈现文本的方式,什么字体可用,等等。谢谢!

2 个答案:

答案 0 :(得分:2)

当我们想要沿y轴对齐块元素时,实际给出了行高。

例如,我在w3schools中有一个单行文本,并且para高度为20px。该段落将以其自己的默认方式编写,但如果我使用line-height等于段落的高度,那么说W3schools中的文本将沿y轴在中间对齐。如果您想要水平对齐(x轴对齐)文本,则text-align:center用于此目的。

请记住,行高并不完全取决于其自身元素高度的高度。但它改变如下。

  1. 如果你有一行文字,高度是20px然后给 line-height:20px垂直对齐文本或垂直对齐 文本。
  2. 如果您有两行文字,高度为20px,则给出行高:10px,使用小填充顶部垂直对齐文本。
  3. 我希望这会让你振作起来。而且我认为您不需要再浏览谷歌了。如果您想要更多解释,那么我会给你jfiddle代码。 :)

答案 1 :(得分:1)

经过一些测试后,我似乎错误地认为文本是如何垂直居中的。事实证明,大多数浏览器都完全符合我的要求 - 他们不会考虑下降器。

对于那些不清楚我在问什么的人:“下降”是低于基线的文本的一部分。例如,小写字符“g”和“y”具有低于基线的部分。我想垂直居中没有这些字符的文本(在我的例子中,只有像“X”这样的大写字符)。

Here是一个jsfiddle,它演示了我发现的内容(将line-height设置为div的高度)。请注意,“X”正确居中,这使得“g”溢出div。但这对我来说没问题,因为文字都是大写的。