我有这个问题,当我使用Masonry作为我的Tumblr主题时,PXU Photoset Extended无法正确加载。我知道是什么导致它,我很遗憾地不知道如何解决它。
我发现在Masonry加载时减少闪烁的唯一原因是用CSS隐藏容器(显示:无)然后在加载Masonry脚本时取消隐藏它。
似乎这有一个奇怪的副作用,PXU Photoset脚本无法正确渲染图像(它们大部分被切断,并且在调整窗口大小时会跳到它们的实际大小)。
所以我用这段代码来调用Masonry,ImagesLoaded和Infinite Scroll:
$(document).ready(function(){
var $container = $('#container');
$container.imagesLoaded(function(){
$container.show();
$container.masonry({
itemSelector: 'article',
gutter: 50,
isFitWidth: true,
});
});
$container.infinitescroll({
navSelector : '#pagination-infinite', // selector for the paged navigation
nextSelector : '#pagination-infinite a.next', // selector for the NEXT link (to page 2)
itemSelector : 'article', // selector for all items you'll retrieve
animate: true,
extraScrollPx: 310,
bufferPx: 40,
loading: {
msgText: '',
finishedMsg: '',
img: 'http://static.tumblr.com/amhdmud/iMBn235bd/1x1.png'
}
},
// 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
$container.masonry( 'appended', $newElems, true );
});
});
});
然后是PXU Photoset Extended:
$(document).ready(function() {
$('.photo-slideshow').pxuPhotoset({
'rounded' : 'false', // corners, all or false
}, function() {
// Callback
});
});
使照片集显示正确的唯一方法是删除显示:none;从容器中,然后Masonry再次在页面加载时从容器中闪烁,我似乎无法以任何其他方式修复。
非常感谢任何帮助,
谢谢。
答案 0 :(得分:1)
PXU Photoset插件要求页面上的照片集可见,以便计算可用区域。不要在容器上使用display: none;
,而是尝试使用visibility: hidden;
,然后在Masonry完成后将其更改为visibility: visible;
。
此外,您需要确保在 Masonry首次传递主题之前,Photoset插件正在运行。