vertical-alignプロパティの説明
CSSのvertical-alignプロパティは、インライン要素や表のセルに対して縦方向の揃える位置を指定します。この機能はインラインレベルの空間を共有する要素同士の相対的な位置を示すものです。ボックスが分かれてしまい個別の空間を作るブロックレベルの縦位置には作用しません。
vertical-alignというプロパティ名を見ると、text-alignの効果と似たような使い方をイメージしてしまいますが、本プロパティの挙動には少し慣れが必要です。
vertical-alignに指定できる値
親要素との相対値
以下に示す値は、親要素に対する垂直方向の配置方法を表します。インライン要素に対して適用できます。
baseline- 指定された要素のベースラインを、親要素のベースラインに揃えます。一部の置換要素のベースラインは、HTMLの仕様上で未定義であるため、ブラウザの挙動に依存します。
text-top- 指定された要素の上端を、親要素のフォントの上端に揃えます。
text-bottom- 指定された要素の下端を、親要素のフォントの下端に揃えます。
middle- 指定された要素の中央を、親要素の
baseline + x-heightの半分に揃えます。 sub- 指定された要素のベースライン、を親要素の
subscript-baselineに揃えます。 super- 指定された要素のベースラインを、親要素の
superscript-baselineに揃えます。 <length>- 指定された要素のベースラインを、親要素のベースラインから値の距離だけ移動します。正の値は上方向へ、負の値は下方向へ移動します。
<percentage>- 指定された要素のベースラインを、親要素のベースラインから
line-heightに対する割合で移動します。正の値は上方向へ、負の値は下方向へ移動します。
行ボックスに対する相対値
以下に示す値は、行ボックスの寸法に対して垂直方向の配置方法を示すものです。インライン要素に対して適用できます。
top- 要素の上端を行ボックスの上端に揃えます。
bottom- 要素の上端を行ボックスの下端に揃えます。ベースラインを持たない要素では、マージン・エリアの境界が下端となります。
表のセル用の値
以下に示す値は、テーブルのセルに作用するものです。
top- 指定されたセルの上辺にあたるパディング・エリアの縁を行の上端に揃えます。
middle- 指定されたセルのパディング・ボックスを行の中央に揃えます。
bottom- 指定されたセルの下辺にあたるパディング・エリアの縁を行の下端に揃えます。
baseline- セルのベースラインを、行内でベースラインを揃えた他のすべてのセルのベースラインに揃えます。
text-top、text-bottom、sub、super、sub、sub、<length>、<percentage>を使用した場合も、同じ挙動を示します。
vertical-alignの使い方とサンプルコード
vertical-alignプロパティの構文は以下の通りです。
/* キーワード値 */
vertical-align: baseline;
vertical-align: text-top;
vertical-align: text-bottom;
vertical-align: top;
vertical-align: bottom;
vertical-align: middle;
vertical-align: sub;
vertical-align: super;
/* <length>値 */
vertical-align: 1em;
vertical-align: 20px;
vertical-align: -10vmin;
/* <percentage>値 */
vertical-align: 10%;
vertical-align: -10%;
/* グローバル値 */
vertical-align: inherit;
vertical-align: initial;
vertical-align: revert;
vertical-align: unset;
vertical-alignの実例
それでは実際にvertical-alignプロパティの書き方を見ていきましょう。以下の例は、インライン行の空間を共有する画像とテキストを用意し、画像の縦位置の寄せ方を変更した時の比較です。
基本的には、親要素が作成したベースラインを基準に相対的な位置の変化が起こります。該当する要素の移動距離が大きい場合に、後続するテキストの位置が変わっているように見えますが、あくまで移動しているのは画像の方です。
