响应调整内容图像的大小

时间:2015-05-15 06:38:29

标签: jquery html css responsive-design

我的网站上有一个.content元素,其中包含主要内容。我希望能够在浏览器调整大小时调整图像大小。所以我做了一个jQuery函数。

首先调用setImgData()函数。这将循环显示所有图像,并将原始大小设置为data-wdata-h属性。

之后调用resizeImg()。根据原始宽度和高度,图像将调整为最大内容宽度(保持纵横比)。

问题是data-*属性未设置。可能是因为加载函数内的$(this)未指向内容图像。

我有什么想法可以解决这个问题吗?

function setImgData(callback) {
    $(".content img").each( function() {
        var img = $(this);
        var pic_real_width, pic_real_height;
        $("<img/>")
            .attr("src", $(img).attr("src"))
            .load(function() {
                pic_real_width = this.width;
                pic_real_height = this.height;
                $(this).data("w", pic_real_width);
                $(this).data("h", pic_real_height);
            });
    });
    callback();
}
function resizeImg() {
    var cWidth = $('.content').innerWidth();
    var cPaddL = $('.content').css('padding-left').replace("px", "");
    var cPaddR = $('.content').css('padding-right').replace("px", "");
    var contentWidth = cWidth - cPaddL - cPaddR;

    $(".content img").each( function() {
        var imgW = $(this).data('w');
        if( imgW > contentWidth ) {
            var imgH = $(this).data('h');
            var newH = Math.round( ( imgH * contentWidth ) / imgW );
            $(this).width( contentWidth ).height( newH );
        }
    });
};
$(function() {
    setImgData(function () {
        resizeImg();
    });
});
$(window).resize( function(){
    resizeImg();
});

0 个答案:

没有答案