如何垂直对齐2种不同大小的文本?


90

我知道要将文本垂直对齐到块的中间,您可以将line-height设置为与块相同的高度。

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

如何设置它以便两个文本的大小都垂直对齐,以便较大的文本位于比较小的文本低的基线上?

Answers:


148

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


5
而且我一直以为vertical-align: middletable-cell唯一的!
罗宾·范·巴伦

1
如果我希望第二个跨度正确浮动,这似乎会失败。然后将其对齐:jsfiddle任何想法如何使其与float一起使用?
2014年

2
是否需要设置父div的高度和线高样式?
lexeek

6

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

编辑 W3Schools尚未清理其行为,但看起来仍然是(最多)伪劣信息源。我现在使用sitepoint。滚动到站点首页的底部,以访问其参考部分。


11
从那以后,我了解到W3Schools不是一个很好的参考站点。有关更多信息,请参见w3fools.com
DwB

2
+1赞成得出结论,认为W3S是垃圾邮件。
aefxx

4

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

 span{
     vertical-align: bottom;
     line-height: 50px;
}

1

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


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 


1

简单的方法-使用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>

0

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

它不是很漂亮并且不能在所有情况下都可用,但是它很简单并且可以使用任何文本大小。


9
我宁愿在再次使用表格进行布局之前接受失败。
JD Isaacks 2010年

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>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.