惯例,首先贴上imagesLoaded的官方网址:http://imagesloaded.desandro.com/css
第一次知道imagesLoaded这个插件是在作瀑布流布局时,当时选用的是masonry这个老牌瀑布流插件,imagesLoaded这个插件也是masonry官方推荐的,多是同一伙人吧。具体场景是这样的,咱们的图片宽度都是固定的,但高度不固定(瀑布流都是这样的吧),但masonry在进行排列前就必须肯定图片的高度,而图片在还没有加载完成前是没法得知高度的(其实也不是绝对,我那时后期就改为在上传图片的时候就记录好图片的高度)。为了保证masonry在拿到图片高度,也即图片加载完成后再进行排列,我根据masonry的推荐,选用了这一款imagesLoaded插件。html
imagesLoaded能够搭配jquery使用,也能够用原生js来调用,这里方便起见(也比较直观)就直接上jquery版的:html5
$('#container').imagesLoaded() .always( function( instance ) { //always事件,在全部图片都加载完成(成功与否不论)时触发 console.log('all images loaded'); }) .done( function( instance ) { //done事件,在全部图片都加载成功时触发 console.log('all images successfully loaded'); }) .fail( function() { //fail事件,在全部图片都加载完成,而且至少有一张图片加载失败时触发 console.log('all images loaded, at least one is broken'); }) .progress( function( instance, image ) { //progress事件,在每一张图片加载完成时都触发一次 var result = image.isLoaded ? 'loaded' : 'broken'; //判断当前图片加载成功与否 console.log( 'image is ' + result + ' for ' + image.img.src ); });
imagesLoaded除了能监测<img>
外,还能监测用css定义的background-image,具体见:http://imagesloaded.desandro.com/#backgroundjquery
除了瀑布流须要用到imagesLoaded,我最近还发如今利用html5 file api读取本地图片的时候也须要用到imagesLoaded,道理同瀑布流。另外,在作一些图片加载效果的时候也能够用到,好比说图片未加载完成以前放个loading图,加载失败时放个错误提示什么的都很方便呢。api