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では動作しませんのであしからず・・・

Powered by CSS TIPS

関連エントリー

tableの膨張を防ぐ【css tips】
CSSで垂直中央を実装する【css tips】
CSSで中央表示を実装する【css tips】
floatした際に背景が消える件【css tip】
画面の下部にフッターを表示する

スポンサードリンク

«floatした際に背景が消える件(IE編) | メイン | CSSで垂直中央を実装する【css tips】»