gpt4 book ai didi

javascript - 仅在完成渲染图像时才计算 div 样式

转载 作者:行者123 更新时间:2023-11-29 16:05:01 25 4
gpt4 key购买 nike

在我的脚本中,我将一个图像从一个数组加载到一个 div 中,然后我计算一些要调整的样式元素。问题是这仅在我在计算样式之前使用超时函数时才有效,如下所示:

  $('#forecastImg').attr('src',get_ImageItemLocation(imageArray[0]));

setTimeout(function(){
var himg= $("#forecastImg").height();
var hest = $("#esterno").height();
var margin= ((hest-himg)/2)-$(".header").height()-$(".forecastdate").height();
if (margin>0){
$("#forecastImg").css('margin-top',(margin+'px'));
}
},240);

如何摆脱超时并确保 height() 值正确?如果我删除超时,我总是会得到一个 height()=0 值。

最佳答案

这里的问题是当您尝试计算边距时图像没有加载,这就是为什么 $('#forecastImg').height() 没有返回预期的高度当您尝试立即进行计算时(在您的情况下,您正在等待加载 setTimeout)

但是,您可以使用 $().load 方法而不是不可靠的 setTimeout 来在加载图像后始终如一地运行您的计算。为此,您必须首先.load 回调方法与这些计算绑定(bind)然后更改src它的值,否则图像可能会立即加载而不调用我们的 .load 回调:

  $('#forecastImg')
.one('load', function () {
var himg = $("#forecastImg").height(),
hest = $("#esterno").height(),
margin = ((hest-himg) / 2) - $(".header").height() - $(".forecastdate").height();

if (margin > 0) {
$("#forecastImg").css('margin-top',(margin+'px'));
}
})
.attr('src', get_ImageItemLocation(imageArray[0]));

关于javascript - 仅在完成渲染图像时才计算 div 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com