修改图片src获取高度问题解决

需求

在刚进到页面时,需要根据后端传来的数据,判断要加载哪张图片,再获取图片的高度,来调整页面样式。

问题

在打开页面时,图片是加载出来了,但获取图片高度却为0,why...

$(".top-btn").height();  //0

解决

造成这样结果的原因是,图片在修改src之后,它要去寻找图片的路径然后加载出来,虽然这个时间很短暂,但是加载完成的时间点也绝对是晚于系统执行下一条语句。
但是我们可以创建一个Image,通过它的onload函数,就能够判断图片是否渲染完成,这样我们就可以去获取页面的图片元素的高度了。
上代码:

var img = new Image();
if (result.end == 1) { //后端获取的判断条件(无视)
  img.src = "./img/01.jpg";
} else {
  img.src = "./img/02.jpg"
}

$(".top-btn").html($(img)); //将创建的img插入到页面中
img.onload = function () {
  $('.wrapper').css({  //图片渲染完成,获取图片高度,赋值给wrapper
    "padding-bottom": img.height + "px"
  });
}
posted @ 2020-11-05 16:56  ZerlinM  阅读(217)  评论(0编辑  收藏  举报