此答案已被截断和编辑以满足 OP 的需求。
使用 jQuery,这是我的建议。您可以摆脱几个 div,只使用包装器和图像。上面代码的问题是您给外部 div 设置了 300px 的高度。这意味着它永远不会收缩得比这更小。我还编写了一个小脚本来说明窗口大小
http://jsfiddle.net/fgTtj/40/
我已经像这样设置了您的 HTML:
<div class="wrapper">
<img src='http://s13.postimg.org/b7hmfvhyv/css.jpg'></img>
</div>
像这样的CSS:
.wrapper {
position:relative;
width:100%;
height:300px;
background-color:blue;
overflow:hidden;
}
.wrapper img{
position:absolute;
max-width:100%;
max-height:100%;
}
新的 jQuery 看起来像这样:
function center(){
var imgW = $('img').width();
var imgH = $('img').height();
var half_imgW = imgW / 2;
var half_imgH = imgH / 2;
$('img').css({
left: "50%",
top: "50%",
margin: "-" + half_imgH + "px 0 0 -" + half_imgW + "px"
});
}
$(document).ready(function(){
var wrapper_Height = $('.wrapper').height();
center();
$(window).resize(function(){
console.log(wrapper_Height);
var winH = $(this).height();
var wrapH = $('.wrapper').height();
if(winH <= wrapH){
$('.wrapper').height(winH);
} else {
if(wrapH <= wrapper_Height){
$('.wrapper').height(winH);
}
}
center();
});
});
您可以在任何方向调整此窗口的大小,图像将保持居中且不会被截断。目前这只适用于一个窗口,因此您必须调整脚本以适应更多。
令人敬畏的是,它几乎可以在所有浏览器中运行,而display:table-cell
在 IE6 和我认为 IE7 等旧浏览器中不起作用。