DIV要素を縦横中央に配置する

2008年1月31日 11:09

とあるCSSによるLitebox的表現のエントリーを見ていて、以前に書いたエントリーよりも
簡潔なCSS(とHTML)で縦横垂直が実現できそうだったので書いてみた。

▼サンプルはこちら
DIV要素を縦横中央に配置するサンプル

まず最初にまとめを話してしまうと、
絶対配置にしたDIV要素を、縦横50%の位置に移動する。
するとボックスの左上が画面中央にくるので、さらにその後ネガティブマージンを使って
ボックスの中央を画面中央に合わせる、というものです。

▼EntryMore▼

CSSサンプルはこんな感じ。
  1. html , body {
  2. background: #fff url(css/images/bg2.gif) left top no-repeat;
  3. width: 100%;
  4. height: 100%;
  5. }
  6. #box {
  7. background: url(css/images/bg.gif) left top no-repeat;
  8. color: #fff;
  9. position: absolute;
  10. top: 50%;
  11. left: 50%;
  12. margin-left: -182px;
  13. margin-top: -115px;
  14. width: 364px;
  15. height: 230px;
  16. }
htmlとbodyにheight100%を適用します。
そうしないと、その配下にあるボックス要素全部がheight:100%に設定しても
画面いっぱいに高さが反映されないためです。

#box自体は最初に書いた通り、絶対配置にしてtop,leftともに50%に設定します。
そのあとでボックス分のネガティブマージンをとります。
(サンプルの場合「margin-left: -182px; margin-top: -115px;」の部分です)
これは、ボックスのwidth、heightの半分の値を指定します。

つまり、ボックス要素の左上をいったん中央にこさせ、
そのあとでボックスの幅、高さ分ずれている部分をネガティブマージンで相殺する、という形です。

トラックバックURL

http://css-eblog.com/cgi-bin/mt/mt-tb.cgi/60

トラックバック

divを縦横画面中央に配置する。

align%CD%D7%C1%C7%A4%CF%B2%A3%CA%FD%B8%FE%A4%B7%A4%AB%C0%A9%B8%E6%A4%C7%A4%AD...

by三浦仮想研究所 2008年5月24日 16:41

コメントを投稿





承認されるまでコメントは表示されません。しばらくお待まちください。