テキストで縦方向の中央揃えを使う場合、tableのセルなど以外で、「vertical-align:middle」を指定しても効果ありません。tableをレイアウトのために使うことは、勧められませんので、その他のCSSによる縦方向の中央揃えをまとめてみました。左側が親要素のboxに対して縦方向の中央揃えしたp要素(背景gold)です。右側がCSSのソースです。

サンプル1は、もっともポピュラーな「position:absolute」を使ったものです。親要素のboxに「position:relative」を指定して 、「top:50%」でトップから親要素の高さの50%分下に移動させます。テキストの上部分が中央になるので、「margin-top:-0.5em」で半角分上に移動させます。

サンプル2は、サンプル1を「absolute」を「relative」に替えたものです。ほとんど同じですが、ブロックレベル要素のp要素の背景が一行にわたっているのが分かります。これをサンプル1と同じにする場合は、p要素に「display:inline-block」を指定します。

サンプル3は、単純に「margin-top:11%」でp要素を下げています。少しアバウトです。同じく一行になります。

サンプル4は、サンプル3と同様単純に「padding-top:11%」でp要素のテキストのみを下げています。背景のgoldは上いっぱいに広がります。

サンプル5は、親要素に「display:table;」、p要素に「display:table-cell」を指定して、「vertical-align:middle」が効くようにしてあります。

サンプル1--p要素

position:absolute;  //子のp要素
top:50%;
margin-top:-0.5em;

サンプル2--p要素

position:relative;  //子のp要素
top:50%;
margin-top:-0.5em;

サンプル3--p要素

margin-top:11%;  //子のp要素

サンプル4--p要素

padding-top:11%;  //子のp要素

サンプル5--p要素

display:table; //親要素のBOX

display:table-cell;  //子のp要素
vertical-align:middle;

戻るボタン