(つくば:カエル)

2009年05月19日

at 21:00
posted by @
comments(3)

スタイルシートでボックスを画面中央に配置

ちょうどこの技術を教えることになったので、メモ。
ボックスを画面中央に配置したい時、横は簡単にできるけど、
縦はどうする?!と昔悩みましたね。。
(テーブルレイアウトなら簡単にできるのに、と)


横幅と縦幅が決まっているデザイン(ログイン画面)などに重宝します。


【サンプル】
body
#container

つくばちゃんねるブログ
【HTMLソース】
<body>
<div id="container">
内容
</div>
<script type="text/javascript" src="minmax.js"></script>
</body>

【CSSソース】
html {
height: 100%;
overflow-y: scroll;
}
body {
position: relative;
height: 100%;
min-width: 320px;
min-height: 160px;
}
#container {
margin: -70px 0 0 -150px;
position: absolute;
top: 50%;
left: 50%;
width: 300px;
height: 140px;
overflow: hidden;
}




CSSの下記部分で、containerボックスの左頂点を画面中央になるように配置し、
#container {
position: absolute;
top: 50%;
left: 50%;
}

下記部分で、containerボックスの中心を画面中央になるように移動しています。
#container {
margin: -70px 0 0 -150px;
}

今回のcontainerボックスは横300ピクセル、縦140ピクセル。
横300÷2=150ピクセルなので左に-150ピクセル、
縦140÷2=70なので上に-70ピクセル、といった計算になります。



上記まででも画面中央に配置されていますが、ウインドウサイズが#containerボックスより小さくなると左上が切れて表示されなくなってしまいます。
min-widthとmin-heightを加えて、ウインドウサイズが#containerボックスより小さくなった場合は、スクロールバーが出るようになります。
html {
height: 100%;
overflow-y: scroll;
}
body {
position: relative;
height: 100%;
min-width: 320px;
min-height: 160px;
}

ただ、IE6ではmin-widthとmin-heightが実装されていないので、
IE6でmin-widthなどが使えるようになるJavaScript「minmax.js」を導入。
<script type="text/javascript" src="minmax.js"></script>

HTMLに追加するだけでIE6でもスタイルが使えるようになります。


同じカテゴリー(XHTML+CSS)の記事画像
IEでiframeのボーダーが消えない
Firefoxで携帯サイトをシミュレートするアドオン
IEで画像の下に意図しないマージン(余白)が出る
Windows版Safariでテキストエリアのリサイズが可能
IE6でネガティブマージンを指定した画像
styleswitcher.jsでスタイルシート切り替え
同じカテゴリー(XHTML+CSS)の記事
 IEでiframeのボーダーが消えない (2009-07-17 21:00)
 スタイルシートでボックスを中央に配置 (2009-07-07 21:00)
 Firefoxで携帯サイトをシミュレートするアドオン (2008-10-31 15:44)
 IEで画像の下に意図しないマージン(余白)が出る (2008-10-09 11:30)
 JavaScriptがいらないGoogleマップ API (2008-06-02 12:15)
 Shift_JISのページでGoogle マップ API (2008-05-23 12:05)


(つくば:カエル)

comments

家のノートで見るととんでもなくずれて見えているけど コレでよいのでしょうか。左によって重なりまくっています。
posted by そら吉そら吉 at 2009年05月19日 23:58
なおってる。失礼しました。
posted by そら吉そら吉 at 2009年05月20日 00:00
>そら吉さん
焦りました;
普通に表示されたようで何よりです。
posted by @@ at 2009年05月22日 08:07

(つくば:カエル)

comments form

名前:
メール:
URL:
コメント: