1

我有一个固定大小为 500x500 的 div。在这个 div 里面我有一个可以是动态的图像标签。这意味着它可以具有正方形、矩形(宽度 > 高度)或垂直矩形(高度 > 宽度)的大小。问题是我不希望这张图片被压扁,我想保持图片的纵横比。所以说图像大小是 1000x250,那么我希望它被调整为 500x125,然后以这个 500x500 的框为中心。如果大小为 500x1000,那么我们希望将其调整为 250x500,然后以左右白色间距居中。

有没有一种简单的方法可以使用纯 css 来做到这一点,还是我需要 javascript 才能做到这一点?如何?

这是我现在拥有的结构:

<div class="product-large" style="position: relative; overflow: hidden;"><img src="/images/store_logos/9ae3d8f75c80d5a48bf59f975e8450c9e8b7a9d9.jpeg" alt=""><img src="/images/store_logos/9ae3d8f75c80d5a48bf59f975e8450c9e8b7a9d9.jpeg" class="zoomImg" style="position: absolute; top: -236.43249427917618px; left: -188.05491990846681px; opacity: 0; width: 1024px; height: 714px; border: none; max-width: none;"></div>
4

3 回答 3

1

更新了垂直居中 - 需要 jQuery。

HTML

<div class="product-large">
    <img src="image1.jpg">
</div>
<div class="product-large">
    <img src="image2.jpg">
</div>

CSS

.product-large {
    width:500px;
    height:500px;
    border:1px red solid;
    position:relative;
}
.product-large img {
    max-width:500px;
    max-height:500px;
    width:auto;
    height:auto;
    position:absolute;
    top:50%;
    left:50%;
}

Javascript (jQuery)

$(".product-large img").each(function () {
    //get height and width (unitless) and divide by 2
    var hWide = ($(this).width()) / 2; //half the image's width
    var hTall = ($(this).height()) / 2; //half the image's height, etc.

    // attach negative and pixel for CSS rule
    hWide = '-' + hWide + 'px';
    hTall = '-' + hTall + 'px';

    $(this).addClass("js-fix").css({
        "margin-left": hWide,
            "margin-top": hTall
    });
});

新小提琴:http: //jsfiddle.net/Asvdk/2/

于 2013-05-03T05:39:57.517 回答
0

I think you can do:

 #conatiner {
    line-height:500px;
    height:500px;
    width:500px;
}
#img {
  max-width: 100%;
  max-height:100%;
  display: block;
  margin: 0 auto;
  vertical-align: middle;
}

minimal partial example here: http://jsfiddle.net/cahs4/

I didn't do the vertical alignment but you can see what I mean

于 2013-05-03T05:35:44.573 回答
0

如果您考虑使用 jQuery,那么您可以在这里查看 ImgCenter jQuery 插件。

于 2013-05-03T06:14:41.710 回答