適切な垂直センタリングは、CSS3 でさえまだカバーされていないものです。
幸いなことに、高さが固定されているため、top
/left
プロパティを操作して負の値を使用margin-top
し、ポジショニングを使用margin-left
して目的の動作を実現できます。absolute
background: #FFFFFF;
width: 950px;
height: 630px;
top: 50%;
left: 50%;
margin: -315px 0 0 -425px; /*top is negative half of height, same for width*/
position: absolute;
デモ/ソース
よりも小さい解像度では、負のマージンが予期しない動作をする可能性があることに注意してくださいdiv
。
これは、テーブルを使用した、もう少しハックな方法です。基本的な考え方は、 CSS プロパティをテーブルに適用すると、古い属性vertical-align:middle
と同じ効果があるということです。valign="center"
したがって、HTML は次のようになります。
<table class="vcenter"><tr><td>
<div id="myDiv">This is a centered div</div>
</td></tr></table>
そしてCSS:
.vcenter {
vertical-align: middle;
width: 100%;
height: 100%;
}
#myDiv {
background: #FFF;
width: 950px;
height: 630px;
margin: 0 auto;
}
html, body { height: 100%; }
デモ/ソース
この方法の利点は、IE6 以降、Firefox、Chrome、Opera、および Safari でテストされている、完全にクロスブラウザーであることです。動作するはずですが、モバイルブラウザーではテストしませんでした。また、解像度が小さい場合のスクロールの問題もありません。このハックは、実稼働サイトの 1 つで中心化されたモーダルに使用します。