| この記事の要点 |
|
vertical-align とは
vertical-align はインラインレベル要素(<span>, <img>, インラインブロック等)とテーブルセル(<td>, <th> または display: table-cell)の縦方向の揃え位置を指定する CSS プロパティです。
「縦方向の揃え」というと幅広く効きそうですが、適用範囲はインラインまたは table-cell に限定される点が最大の注意ポイントです。
構文
selector {
vertical-align: <keyword> | <length> | <percentage>;
}
キーワード値の意味
| 値 | 意味 | 適用 |
|---|---|---|
baseline(既定) | 親のベースラインに揃える | インライン |
top | 行ボックスの上端 / セルの上端 | インライン / table-cell |
middle | 親の中央(x-height の中央) | インライン / table-cell |
bottom | 行ボックスの下端 / セルの下端 | インライン / table-cell |
text-top | 親のフォントの上端 | インライン |
text-bottom | 親のフォントの下端 | インライン |
sub | 下付き文字位置 | インライン |
super | 上付き文字位置 | インライン |
<length>(例: 4px, -2px) | ベースラインから上下にずらす | インライン |
<percentage>(line-height 基準) | line-height の %でベースラインからずらす | インライン |
インライン要素での使用例
テキストと画像を中央で揃える
<p>
これは
<img src="icon.png" alt="" style="vertical-align: middle; height: 20px">
アイコンです
</p>
img は既定で baseline 配置のため、テキストよりやや沈んで見えます。middle を指定すると x-height の中央に揃い、自然な見た目になります。
下付き / 上付き文字
<p>水の化学式は H<span style="vertical-align: sub; font-size: .8em">2</span>O</p>
<p>E = mc<span style="vertical-align: super; font-size: .8em">2</span></p>
テーブルセルでの使用例
セル内の上下方向揃えはまさに vertical-align の独壇場です。
th, td {
vertical-align: top; /* セル上端揃え */
}
.center td {
vertical-align: middle; /* セル中央 */
}
.bottom td {
vertical-align: bottom; /* セル下端 */
}
典型的なトラブル:img の下にできる隙間
HTML で img をブロックで使うと、画像の下に 3〜5px ほどの隙間ができることがあります。これは img がインライン扱いで、フォントのディセンダー領域を確保しているために起こる「あるある」です。
対処法
/* 方法 1: middle に揃える */
img { vertical-align: middle; }
/* 方法 2: bottom に揃える */
img { vertical-align: bottom; }
/* 方法 3: ブロック化(一番確実) */
img { display: block; }
注意:ブロック要素や Flex アイテムには効かない
vertical-align はインラインまたは table-cell 限定です。以下は効きません。
| 状況 | 代わりに使うもの |
|---|---|
ブロック要素(<div>)の中身を縦中央に | Flex(display: flex; align-items: center) |
| Flex アイテムを縦中央に | align-items / align-self |
| Grid セル内を縦中央に | align-items / align-self / place-items |
| 絶対配置で中央 | top: 50%; transform: translateY(-50%) |
Flex に置き換える例
/* これは「効かない」 */
.box {
height: 200px;
vertical-align: middle; /* ブロックなので無効 */
}
/* これが正解 */
.box {
height: 200px;
display: flex;
align-items: center; /* 縦方向中央 */
justify-content: center; /* 横方向中央 */
}
baseline の振る舞いを理解する
初期値 baseline は「親のベースライン」に対する揃えです。インライン要素同士でサイズが違うフォントを並べた時の挙動は、ベースラインで揃うことで保たれています。
<p>
<span style="font-size: 16px">小さい</span>
<span style="font-size: 36px">大きい</span>
<span style="font-size: 16px">小さい</span>
</p>
上記は全てのテキストが下端ではなくベースラインで揃います。揃えたい位置を変えたいときに vertical-align を使います。
長さ・% 指定
キーワードでは表現しきれない微調整に使います。正値で上、負値で下に動かします。
.icon {
vertical-align: -3px; /* 3px 下にずらす */
}
.note {
vertical-align: 30%; /* line-height の 30% 上にずらす */
}
ブラウザ互換
vertical-align は CSS 1 から存在し、すべての主要ブラウザで完全サポートされています。挙動の差は基本的にありません。
FAQ
Q: div の中身を縦中央にしたい
A: vertical-align は使えません。Flex(display: flex; align-items: center)または Grid(place-items: center)を使ってください。
Q: テーブル風の中央揃えを div でも使いたい
A: display: table-cell を使えば vertical-align が効きます。ただし Flex のほうが一般的で柔軟です。
Q: 親のフォントを変えたら揃えが崩れた
A: middle は x-height 基準なので、フォントによって中央位置がズレます。完全な縦中央が要るなら Flex を使ってください。
関連
- white-spaceプロパティ
- テキスト — 親カテゴリ
- CSS — 上位カテゴリ
- line-height / display / align-items
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09