【发布时间】:2011-04-29 05:15:21
【问题描述】:
我知道要将文本垂直对齐到块的中间,你将 line-height 设置为块的相同高度。
但是,如果我有一个句子中间有一个单词,那就是2em。如果整个句子的行高与包含块相同,则较大的文本垂直对齐,但较小的文本与较大的文本位于同一基线上。
如何设置它,使两种大小的文本垂直对齐,以便较大的文本将位于低于较小文本的基线上?
【问题讨论】:
标签: css text vertical-alignment baseline
我知道要将文本垂直对齐到块的中间,你将 line-height 设置为块的相同高度。
但是,如果我有一个句子中间有一个单词,那就是2em。如果整个句子的行高与包含块相同,则较大的文本垂直对齐,但较小的文本与较大的文本位于同一基线上。
如何设置它,使两种大小的文本垂直对齐,以便较大的文本将位于低于较小文本的基线上?
【问题讨论】:
标签: css text vertical-alignment baseline
简单的方法 - 使用 flex:
<div>
abcde
<span>efghai</span>
</div>
<style>
div {
padding: 20px;
background-color: orange;
display: flex;
align-items: center; }
span {
font-size: 1.5em; }
</style>
【讨论】:
您可以使用百分比大小重新应用父级的line-height
.big {
font-size: 200%;
line-height: 25%;
display: inline-block;
vertical-align: middle;
}
Utque aegrum corpus <span class="big">etiam</span> levibus solet offensis
【讨论】:
这行得通
header > span {
margin: 0px 12px 0px 12px;
vertical-align:middle;
}
.responsive-title{
font-size: 12vmin;
line-height: 1em;
}
.responsive-subtitle{
font-size: 6vmin;
line-height: 2em;
}
<header>
<span class="responsive-title">Foo</span>
<span class="responsive-subtitle">Bar</span>
</header>
【讨论】:
这两组文本必须具有相同的固定行高和垂直对齐集
span{
vertical-align: bottom;
line-height: 50px;
}
【讨论】:
在内联容器上试试vertical-align:middle;?
编辑:它可以工作,但您的所有文本都必须在内联容器中,如下所示:
<div style="height:100px; line-height:100px; background:#EEE;">
<span style="vertical-align:middle;">test</span>
<span style="font-size:2em; vertical-align:middle;">test</span>
</div>
【讨论】:
vertical-align: middle 只为table-cell 服务!
【讨论】:
一种选择是使用表格,不同大小的文本位于各自的单元格中,并在每个单元格上使用 align:middle。
它并不漂亮,并不适用于所有场合,但它很简单,适用于任何文本大小。
【讨论】:
但是,从技术上讲,您不能,如果您有固定的文本大小,则可以使用定位(相对)将较大的文本向下移动并将行高设置为较小的文本(我假设这个较大的文本被标记这样你就可以将它用作 CSS 选择器)
【讨论】: