比例图像缩放

时间:2011-08-26 17:36:14

标签: javascript jquery html css

我有一个已知大小的div和一个随机大小的图像的链接,我想在这个div中显示。我希望图像具有比例缩放,与posible一样大,但不大于div(图像宽度应该等于div的宽度或图像高度应该等于div的高度,但我不知道哪个情况)

我怎么能只用html,css,javascript和jquery呢? 如果不想读取图像大小那就太棒了。

2 个答案:

答案 0 :(得分:5)

通过将max-widthmax-height设置为100%,您可以使用纯CSS执行此操作。这是一篇很好的文章来阅读这个主题:http://unstoppablerobotninja.com/entry/fluid-images。本文还讨论了如何处理旧版本的IE。

以下是CSS实际应用的示例 - http://jsfiddle.net/JamesHill/R7bAA/

HTML

<div id='div1'>
    <img class='myImageClass' src='http://www.google.com/intl/en_com/images/srpr/logo3w.png' />
</div>
<br />
<div id='div2'>
    <img class='myImageClass' src='http://www.google.com/intl/en_com/images/srpr/logo3w.png' />
</div>

CSS

#div1
{
    height:100px;
    width:200px;
    background-color:Gray;
    border: 1px solid Black;
}
    #div2
{
    height:500px;
    width:100px;
    background-color:Gray;
    border: 1px solid Black;
}
.myImageClass
{
    max-height:100%;
    max-width:100%;
}

答案 1 :(得分:0)

这是一个javascript方法,用于计算图像和容器的纵横比,并设置首先到达边缘的相应高度或宽度值,然后图像按比例缩放其他维度:

// pre-cache image
var img1 = new Image();
img1.src = "http://photos.smugmug.com/photos/344291068_HdnTo-L.jpg";
var img2 = new Image();
img2.src = "http://photos.smugmug.com/photos/344291068_HdnTo-L.jpg";

function placeImage(imgObj, containerID) {
    var container = $(containerID);
    var imageAspectRatio = imgObj.height / imgObj.width;
    var containerAspectRatio = container.height() / container.width();
    // figure out which dimension hits first and set that to match
    if (imageAspectRatio > containerAspectRatio) {
        imgObj.style.height = container.height() + "px";
    } else {
        imgObj.style.width = container.width() + "px";
    }
    container.append(imgObj);

}

$("#go").click(function() {
    placeImage(img1, "#container1");
    placeImage(img2, "#container2");
});

你可以在这个jsFiddle中看到它:http://jsfiddle.net/jfriend00/5K3Zf/