テキストで縦方向の中央揃えを使う場合、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;