目标:
当窗口的宽度和高度都很小时,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 不能保持水平收缩。