97

我知道要将文本垂直对齐到块的中间,您将行高设置为块的相同高度。

但是,如果我有一个句子中间有一个单词,那就是2em。如果整个句子的行高与包含块相同,则较大的文本垂直对齐,但较小的文本与较大的文本在同一基线上。

如何设置它以使两种大小的文本都垂直对齐,因此较大的文本将位于比较小文本低的基线上?

4

8 回答 8

159

试试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>

于 2010-10-22T14:54:09.580 回答
6

您看到的功能是正确的,因为“垂直对齐”的默认值是基线。看来你想要vertical-align:top。还有其他选择。请参阅W3Schools的此处。

编辑W3Schools 并没有清理他们的行为,而且看起来仍然是一个劣质的(充其量)信息来源。我现在使用sitepoint。滚动到站点首页的底部以访问其参考部分。

于 2010-10-22T14:58:44.767 回答
6

两组文本必须具有相同的固定行高和垂直对齐集

 span{
     vertical-align: bottom;
     line-height: 50px;
}
于 2017-09-05T08:36:57.197 回答
2

简单的方法 - 使用 flex:

<div>
        abcde
        &nbsp;&nbsp;
        <span>efghai</span>
</div>

<style>
    div {
        padding: 20px;
        background-color: orange;
        display: flex;
        align-items: center; }

    span {
        font-size: 1.5em; }
</style>
于 2019-08-09T06:21:32.757 回答
1

但是,从技术上讲,您不能,如果您有固定的文本大小,则可以使用定位(相对)来向下移动较大的文本并将行高设置为较小的文本(我假设这个较大的文本被标记为这样因此您可以将其用作 CSS 选择器)

于 2010-10-22T14:53:30.667 回答
1

您可以使用百分比大小重新应用父母的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 

于 2019-04-03T14:17:32.573 回答
0

一个选项是使用一个表格,不同大小的文本位于它们自己的单元格中,并在每个单元格上使用 align:middle。

它并不漂亮,并不适用于所有场合,但它很简单,适用于任何文本大小。

于 2010-10-22T14:59:00.800 回答
0

这有效

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>

于 2018-02-05T19:24:01.660 回答