我DIV
的页面上有 s 包含IMG
s。单击图像时,它们会在灯箱中打开,但在 DIV 内部,它们应该完全填充 DIV,但保持纵横比。
这是我到目前为止所取得的成就,问题是图像处于纵向模式时不会保留纵横比。
所以我需要一个 CSS 方法来垂直和水平居中图像,同时完全填充包装 DIV(当然还有裁剪图像的溢出部分)。
这是可能的,只有 CSS,还是需要 JS?浏览器兼容性是 IE8 和更高版本以及所有现代浏览器。
用 JS/JQuery 像这样解决它:
function resizeImages(){
$("#container img").each(function() {
var thisHeight = $(this).height();
var thisWidth = $(this).width();
var containerWidth = $(this).parent().width();
var containerHeight = $(this).parent().height();
var diff = 0;
if(thisHeight > thisWidth){
//portrait
$(this).css("width","100%");
thisHeight = $(this).height();
diff = thisHeight - containerHeight;
$(this).css("margin-top",-(diff/2));
}
else if(thisWidth > thisHeight){
//landscape
$(this).css("height","100%");
var thisWidth = $(this).width();
if(thisWidth < containerWidth){
$(this).css("width", containerWidth);
thisWidth = containerWidth;
}
diff = thisWidth - containerWidth;
$(this).css("margin-left",-(diff/2));
}
$(this).css("opacity",1);
});
}
最后将 set-opacity 设置为 1 是因为我只想在完成调整大小后显示图像,所以我在 CSS 中将它们设置为 opacity:0 ,然后在调整大小后显示它们。
这适用于所有容器宽度和图像模式。