インライン要素やテーブルセルの上下中央揃えに関してはvertical-alignでいけますが、ブロックレベル要素の上下中央揃えはどのようにしていったらよいのでしょうか?
おそらく検索から来た方はそこで悩んだと思います。これを解決していきます。12月2日記事
イメージ

ブロックレベル要素のdivやpやliタグなど、ブロックレベル要素にはvertical-alignは適用できません。
そんな中でブロックレベル要素に適用するためには、positionプロパティとleft: right: top: bottom: +margin: auto;を使って上下中央揃えをします。
HTML
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> <title>ブロックレベル要素の上下中央揃え</title> </head> <body> <div id="table-s"><!--インライン要素やテーブルセルは適用できるよ。--> <p>真ん中</p> </div> <div id="block"><!--こっちは別の方法で適用させる。--> <p class="block-s">ブロックレベル要素ですが真ん中です。</p> </div> </body> </html>
CSS
@charset "utf-8";
/* CSS Document */
#table-s {
display: table-cell;
width: 300px;
height: 200px;
background: #CFF;
vertical-align: middle;
text-align: center;
}
#block {
margin-top: 30px;
width: 300px;
height: 200px;
background: #FCF;
position: relative;
}
.block-s {
/*ここから*/
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 100px;
height: 60px;
/*ここまでの表記が重要*/
background: #FFC;
}
ブロックレベル要素で悩んだ場合はこれを使いましょう。
以上