我正在使用砌体和一种实际上不使用该库的无限滚动版本。初始图像正确进入布局,但添加的图像不会......它们只是连续添加。
我相信这是因为它们是从一个没有高度/宽度属性的字符串加载来选择位置的。我是这么认为的,因为当我将它们包装成预定尺寸的div时,它们会正确地进入布局(但图像将是不同的高度)
我在pageload上有一定数量的图像,可以正确地将砌体应用到它们的布局中。
然后使用PHP调用sql,我收集了一个图像路径数组,我将其变成一个javascript数组:
var images = [
<?php
foreach ($images as $image) {
echo "'/$image',\n";
} ?>
];
$(images).each(function() {
var image = $('<img />').attr('src', this);
});
</script>
然后我在触发事件中使用追加到砌体:
一次加载5个$appendage += '<div class="box append"><img src="' + images[i] + '" /></div>';
count++;
}
var $container = $('#result');
$container.append( $appendage ).masonry( 'appended', $appendage );
我尝试了各种预加载图像的方案无济于事。
$(images).each(function() {
(new Image).src = this;
});
任何人都可以建议一种方法,也许是一种更好的方法,从图像路径数据库作为起点到加载到砌体中的图像,当你滚动到底部时附加
谢谢!
答案 0 :(得分:0)
以下是相关的JavaScript:
$(function(){
var $container = $('#container');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.box',
columnWidth: 100
});
});
$container.infinitescroll({
navSelector : '#page-nav', // selector for the paged navigation
nextSelector : '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '.box', // selector for all items you'll retrieve
loading: {
finishedMsg: 'No more pages to load.',
img: 'http://i.imgur.com/6RMhx.gif'
}
},
// trigger Masonry as a callback
function( newElements ) {
// hide new items while they are loading
var $newElems = $( newElements ).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
}
);
});