在完全加载之前获取图像高度
我需要能够在完全加载到页面之前使用jQuery来获取图像#imageHero
的高度。 然后我需要将div #imageDiv
的高度设置为正在加载的#imageHero
的高度。
我需要在页面创建时尽快发生…目前我用来将div #imageDiv
设置为图像高度的#imageDiv
发生得很慢,页面加载看起来很奇怪…
有什么建议?
正如评论中所提到的,这已经在这里得到了解答,尽管纯JavaScript不是JQuery。 我已经适应了这个答案:
- 使用JQuery
- 使用静态图像
- 创建了一个可以调用的简单函数
这是function……
function getImageSize(img, callback){ img = $(img); var wait = setInterval(function(){ var w = img.width(), h = img.height(); if(w && h){ done(w, h); } }, 0); var onLoad; img.on('load', onLoad = function(){ done(img.width(), img.height()); }); var isDone = false; function done(){ if(isDone){ return; } isDone = true; clearInterval(wait); img.off('load', onLoad); callback.apply(this, arguments); } }
您可以使用图像元素调用该函数,并使用接受宽度和高度参数的回调…
getImageSize($('#imageHero'), function(width, height){ $('#imageDiv').height(height); });
小提琴 – 要查看完整效果,请确保图像不在缓存中(随机附加到图像源)。
@ Drahcir答案的改进,这个版本返回真正的高度,并有其他改进。 用于测试将图像源中的abc123
更改为任何随机字符串以防止缓存。
还有一个JSFiddle演示 。