如何在 flex 元素中垂直居中文本?

3

在使用flexbox(或其他纯CSS方法)时,有没有一种特殊的方式可以垂直居中元素中的文本?

Fiddle: http://jsfiddle.net/WK_of_Angmar/JZZWg/

<body>
<div id="main">
    <section id="a">Test1</section>
    <section id="b">Test2</section>
</div>

#a {
    flex: 1 0 auto;
}
#b {
    flex: 0 0 auto;
    min-height: 3em;
    background-color: yellow;
}
#a {
    background-color: blue;
}
#main {
    display: flex;
    flex-direction: column;
    height: inherit;
}

body {height: inherit;}
html {height: 100%;}

不小心在这里问问题了,本应该去 Stack Overflow。如果能转移过去就非常感激 :-) - Wk_of_Angmar
使用flexbox,您可以在flex容器中垂直居中flex元素,但是flexbox不支持在flex元素内部居中文本内容。您需要使用与在非flex元素中居中文本相同的技巧。 - Matt Coughlin
1个回答

6

啊,真不敢相信我竟然忘了这个。如果没有人提供更优雅的解决方案,我就接受它。 - Wk_of_Angmar
虽然可以选择另一种方法(使用vertical-align和图像),但行高可能更优雅。这是一篇介绍两种解决方案的文章链接:http://hu.je/example - Miloš Miljković
对于一个单行文本,它永远不会换行到第二行,并且位于一个具有固定高度的容器中,这是可能的最优雅的解决方案。它是否符合您的要求?(如果不是,您需要另一种解决方案) - Matt Coughlin
我不希望内容换行,但这并不能解决在边缘情况下(可能会换行)出现的问题。目前,这是我要实现的,但它并不完全符合我的要求。然而,有一些巧妙的解决方法可以使其成为令人满意的解决方案。CSS 在创建布局方面非常混乱。 - Wk_of_Angmar

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