vertical-alignの使い方【css tips】
vertical-alignは正しく理解していないと使いにくいプロパティである。
特にtableレイアウトからcssレイアウトに移行する際に混乱が発生しがちだ。
テーブルレイアウトでよく使う以下のようなコードがある。
<table width="200" height="200" bgcolor="#39FF6B">
<tr>
<td valign="middle" align="center">中央に表示したい文字</td>
<tr>
</table>
このコードをcssレイアウトに変更する際に
HTMLを
<div>
<p>中央に表示したい文字</p>
</div>
CSSを
div{
width:200px;
height:200px;
background:#39FF6B;
text-align:center;
vertical-align:middle;
}
としてしまいがちだがこれでは正しく動作しない。
サンプル
これはvertical-alignがボックスレベル要素ではなく、テーブルセルの縦方向の揃え位置を指定するプロパティだからです。
ただし、line-heightで親ボックスレベル要素と同じ値を与えれば中央表示が可能である(2007/2/7追記)
div{
width:200px;
height:200px;
background:#39FF6B;
text-align:center;
}
p{
line-height:200px;
}
2行以上の文などには利用できないが、有用な方法です
2行以上の文などで垂直中央を実装を実装したい場合はCSSで垂直中央を実装するを参考にしてください。
おまけ
vertical-alignはテーブルセルに対して有効なわけだが、そもそもテーブルセルとは何かというとtd要素やth要素のことで、この要素のdislayプロパティはtable-cellになります。
つまり、ブロックレベル要素でもdisplayにtable-cellを指定すればvertical-alignが利用可能になります。
div{
display:table-cell;
width:200px;
height:200px;
background:#39FF6B;
text-align:center;
vertical-align:middle;
}
でも例のごとくIEでは動作しませんのであしからず・・・
関連エントリー
tableの膨張を防ぐ【css tips】
CSSで垂直中央を実装する【css tips】
CSSで中央表示を実装する【css tips】
floatした際に背景が消える件【css tip】
画面の下部にフッターを表示する