テキストをブロックの中央に垂直に配置することを知っています。行の高さをブロックの同じ高さに設定します。
ただし、単語が真ん中にある文がある場合、それは2em
。文全体の行の高さが包含ブロックと同じである場合、大きいテキストは垂直方向に配置されますが、小さいテキストは大きいテキストと同じベースライン上にあります。
両方のサイズのテキストが垂直方向に整列するように設定するにはどうすればよいですか?したがって、大きいテキストは小さいテキストよりも低いベースラインになりますか?
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>
テキストの2つのセットは、同じ固定の行の高さと垂直方向の配置を設定する必要があります
span{
vertical-align: bottom;
line-height: 50px;
}
技術的にはできませんが、テキストサイズを固定している場合は、配置(相対)を使用して大きなテキストを下に移動し、行の高さを小さなテキストに設定できます(この大きなテキストはそのようにマークアップされていると思います) CSSセレクターとして使用できます)
パーセンテージサイズを使用して、親の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
簡単な方法-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>
オプションは、異なるサイズのテキストがそれぞれのセルにあるテーブルを使用し、各セルでalign:middleを使用することです。
きれいではなく、すべての場面で機能するわけではありませんが、シンプルであり、あらゆるテキストサイズで機能します。
これは動作します
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>