我正在使用砖石来加载大量图像,我对其进行了设置,以便图像逐渐加载(附加)而不是在页面上有大量空白。您可以在此处查看实时版本以帮助说明我的意思。
但是,由于图像正在加载,如果还有更多图像要加载,则不是很清楚。是否可以在底部附加一个 loader.gif 以表明还有更多图像?然后,一旦加载了所有图像,loader.gif 就会消失。
这是我的jQuery:
$( function() {
var $container = $('#artistDetWrap').masonry({
columnWidth: 1,
gutter: 0,
itemSelector: '.artPost'
});
// reveal initial images
$container.masonryImagesReveal( $('#images').find('.artPost') );
});
$.fn.masonryImagesReveal = function( $items ) {
var msnry = this.data('masonry');
var itemSelector = msnry.options.itemSelector;
// hide by default
$items.hide();
// append to container
this.append( $items );
$items.imagesLoaded().progress( function( imgLoad, image ) {
// get item
// image is imagesLoaded class, not <img>, <img> is image.img
var $item = $( image.img ).parents( itemSelector );
// un-hide item
$item.show();
// masonry does its thing
msnry.appended( $item );
});
return this;
};
这是我的 HTML:
<div id="artistDetWrap" class="entry-content clearfix"></div>
<div id="images">
<div class="artPost col-lg-6">
<img width="1170" height="828" alt="dreams_FULL" class="attachment-full" src="myimgsrc.jpg">
</div>
</div>
更新:
我已在 jquery 中添加以计算图像。他们都在加载时添加了一个加载类,所以这部分工作得很好。但是,加载程序在全部加载后不会隐藏。这是我的jQuery:
$.fn.masonryImagesReveal = function( $items ) {
var totalImage = $('.artPost').length;
var msnry = this.data('masonry');
var itemSelector = msnry.options.itemSelector;
// hide by default
$items.hide();
// append to container
this.append( $items );
$items.imagesLoaded().progress( function( imgLoad, image ) {
// get item
// image is imagesLoaded class, not <img>, <img> is image.img
var $item = $( image.img ).parents( itemSelector );
// un-hide item
$item.show();
// masonry does its thing
msnry.appended( $item );
$item.addClass('loaded');
});
if (totalImage == $('.loaded').length) // if you have other element with loaded class, add more selector to $('.loaded')
$('#loader').hide();
return this;
};