ゴール:
ウィンドウの幅と高さがどちらも小さい場合、div はウィンドウと同じサイズにする必要があります。
ウィンドウの幅が大きすぎる場合 (>max-width)、div はその幅を max-width のままにして、水平方向の中央に配置する必要があります。
ウィンドウの高さが大きすぎる場合 (>max-height)、div はその高さを max-height のままにし、垂直方向に中央揃えにする必要があります。
以下の例は、最後の点を除いてすべてを達成しています。
このdivをウィンドウの垂直方向に中央揃えにする方法は? つまり、赤い領域を緑の領域のように動作させたいのですが、水平ではなく垂直にします。
(このデザインは、モバイル デバイスの画面のレスポンシブ デザインを目的としています。可能であれば、JS の関与はありません。)
<!doctype html>
<html>
<head>
<style>
body,html{
height:100%;
margin:0px;
background:green;
}
#t1{
position:relative;
height:100%;
max-width:640px;
margin:0 auto;
background-color:red;
}
#t1-1{
position:absolute;
height:100%;
max-height:640px;
width:100%;
background-color:#dddddd;
overflow:hidden;/*demo purpose*/
}
/*the following stuff are for demo only*/
img{
position:absolute;
opacity:0.5;
}
img.w{
width:100%;
}
img.h{
height:100%;
}
</style>
</head>
<body>
<div id="t1">
<div id="t1-1">
<img class="h" src="http://www.google.com/images/srpr/logo3w.png" />
<img class="w" src="http://www.google.com/images/srpr/logo3w.png" />
</div>
</div>
</body>
</html>
PS この例では、一部のデスクトップ ブラウザが内部で min-width 値を全体に設定し (例: Chrome では 400px)、div が水平方向に縮小し続けるのを無効にしています。