CSS

The CSS vertical-align property is used to align text and images vertically within inline elements and table cells.

vertical-align

 CSSの vertical-alignプロパティは、インライン要素やテーブルセル内のコンテンツの垂直方向の位置合わせを制御するために使用されます。このプロパティを適切に使用することで、テキストや画像などの要素を垂直方向に整列させ、デザインの一貫性と視覚的なバランスを保つことができます。

使用可能な値

キーワード値

baseline
適用した要素のベースラインを親要素のベースラインに揃える(初期値)
sub
要素を下付き文字の位置に配置します(テーブルセルへの指定は無効)
super
要素を上付き文字の位置に配置します(テーブルセルへの指定は無効)
text-top
要素の上端を親要素のフォントの上端に揃えます(テーブルセルへの指定は無効)
text-bottom
要素の下端を親要素のフォントの下端に揃えます(テーブルセルへの指定は無効)
middle
要素の中央を親要素のベースライン+xハイトの半分の位置に揃えます
top
要素の上端を行ボックスの上端に揃えます
bottom
要素の下端を行ボックスの下端に揃えます

長さ・パーセンテージ値

長さ(例:10px, 2em)
要素のベースラインを指定した長さだけ上下に移動します(ベースラインが揃った状態を0として、正の値なら上、負の値なら下へ移動)
パーセンテージ(例:50%)
要素のラインボックスの高さに対するパーセンテージで位置を調整します(ベースラインが揃った状態を0として、正の値なら上、負の値なら下へ移動)

注意点

ブロック要素には適用されない
vertical-alignはインライン要素やテーブルセルに適用されますが、ブロック要素には影響しません。
親要素との関係
位置合わせは親要素や周囲の要素に依存するため、意図した通りに表示されない場合は要素の構造を確認してください。
FlexboxやGridとの併用
最近のレイアウト方法(FlexboxやGridレイアウト)では、垂直方向の位置合わせに専用のプロパティ(align-itemsやjustify-content)を使用することが推奨されます。

 vertical-alignプロパティは、それぞれの値を指定した際の実際の動作が理解しにくいもののひとつですが、以下のポイントを知っておくと、理解を深めるのに役立ちます。

Sample

HTML

<div id="sample">
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample1">baseline</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample2">top</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample3">middle</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample4">bottom</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample5">text-top</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample6">text-bottom</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample7">super</span></span></div>
	<div><span class="rei">例</span><span class="oya">Example.<span class="sample8">sub</span></span></div>
</div>

CSS

#sample div {background-color:#ccccff; margin:4px;}
.rei {font-size:60px;}
.oya {font-size:30px; background-color:#ccffcc;}
.sample1 {font-size:12px; background-color:#ffccff; vertical-align:baseline;}
.sample2 {font-size:12px; background-color:#ffccff; vertical-align:top;}
.sample3 {font-size:12px; background-color:#ffccff; vertical-align:middle;}
.sample4 {font-size:12px; background-color:#ffccff; vertical-align:bottom;}
.sample5 {font-size:12px; background-color:#ffccff; vertical-align:text-top;}
.sample6 {font-size:12px; background-color:#ffccff; vertical-align:text-bottom;}
.sample7 {font-size:12px; background-color:#ffccff; vertical-align:super;}
.sample8 {font-size:12px; background-color:#ffccff; vertical-align:sub;}
Example.baseline
Example.top
Example.middle
Example.bottom
Example.text-top
Example.text-bottom
Example.super
Example.sub

Sample 2

インライン画像の垂直位置調整

テキストの中にある Sample image 画像を垂直方向に調整します。

テキストの中にある Sample image 画像を垂直方向に調整します。

テキストの中にある Sample image 画像を垂直方向に調整します。

 上記の例では、vertical-alignを使用して画像の垂直位置をテキストの中央、上端、下端に揃えることができます。

HTML

<p>
	テキストの中にある
	<img src="image.jpg" alt="Sample image" class="align-middle">
	画像を垂直方向に調整します。
</p>
<p>
	テキストの中にある
	<img src="image.jpg" alt="Sample image" class="align-top">
	画像を垂直方向に調整します。
</p>
<p>
	テキストの中にある
	<img src="image.jpg" alt="Sample image" class="align-bottom">
	画像を垂直方向に調整します。
</p>

CSS

.align-middle {
	vertical-align: middle;
}
.align-top {
	vertical-align: top;
}
.align-bottom {
	vertical-align: bottom;
}

Sample 3

テーブルセル内のコンテンツ位置調整

上揃えのセル 中央揃えのセル 下揃えのセル

 テーブル内でセルのコンテンツを垂直方向に揃える際にも vertical-alignが役立ちます。

HTML

<table>
	<tr>
		<td style="vertical-align: top;">上揃えのセル</td>
		<td style="vertical-align: middle;">中央揃えのセル</td>
		<td style="vertical-align: bottom;">下揃えのセル</td>
	</tr>
</table>

CSS

table {
	border: 1px solid;
}
td {
	border: 1px solid;
	height: 3em;
	padding: 10px;
}