假设我有一行全部大写的文本(例如text-transform: uppercase
)。我希望将此文本垂直居中于div
。我不需要担心多行文字。
有几种方法可以在CSS中垂直居中(例如,检查this)。不幸的是,所有这些方法都考虑了descenders,而且我的文本没有任何下降,因此它没有完全居中。基本上,我想将文本的一部分从基线到中心高度居中。
有没有办法垂直居中一行大写文字?现在我正在使用position: relative
并手动调整它直到它居中(例如使用top: 2px
),但这显然不是一个强大的解决方案(它非常依赖于浏览器呈现文本的方式,什么字体可用,等等。谢谢!
答案 0 :(得分:2)
当我们想要沿y轴对齐块元素时,实际给出了行高。
例如,我在w3schools中有一个单行文本,并且para高度为20px。该段落将以其自己的默认方式编写,但如果我使用line-height等于段落的高度,那么说W3schools中的文本将沿y轴在中间对齐。如果您想要水平对齐(x轴对齐)文本,则text-align:center用于此目的。
请记住,行高并不完全取决于其自身元素高度的高度。但它改变如下。
我希望这会让你振作起来。而且我认为您不需要再浏览谷歌了。如果您想要更多解释,那么我会给你jfiddle代码。 :)
答案 1 :(得分:1)
经过一些测试后,我似乎错误地认为文本是如何垂直居中的。事实证明,大多数浏览器都完全符合我的要求 - 他们不会考虑下降器。
对于那些不清楚我在问什么的人:“下降”是低于基线的文本的一部分。例如,小写字符“g”和“y”具有低于基线的部分。我想垂直居中没有这些字符的文本(在我的例子中,只有像“X”这样的大写字符)。
Here是一个jsfiddle,它演示了我发现的内容(将line-height
设置为div
的高度)。请注意,“X”正确居中,这使得“g”溢出div。但这对我来说没问题,因为文字都是大写的。