Javascript 如何正确堆叠砌体布局和延迟加载图像?
好的,我正在为Wordpress制作一个砖石布局风格的图库,使用高级自定义字段,使用延迟加载和lightbox 我的lightbox(fancybox-v3)和massy布局(macy.js)都可以正常工作,但是当我加入延迟加载时,我遇到了问题。我正在使用jQuery.lazy 这是我的循环Javascript 如何正确堆叠砌体布局和延迟加载图像?,javascript,jquery,html,css,wordpress,Javascript,Jquery,Html,Css,Wordpress,好的,我正在为Wordpress制作一个砖石布局风格的图库,使用高级自定义字段,使用延迟加载和lightbox 我的lightbox(fancybox-v3)和massy布局(macy.js)都可以正常工作,但是当我加入延迟加载时,我遇到了问题。我正在使用jQuery.lazy 这是我的循环 <?php // check if the repeater field has rows of data if( have_rows('card') ): // loop through
<?php
// check if the repeater field has rows of data
if( have_rows('card') ):
// loop through the rows of data
while ( have_rows('card') ) : the_row();
// display a sub field value inside a card
?> <div class="grid-item">
<?php
//VARIABLES//
$title = get_sub_field('card_title');
$childImage = get_sub_field('card_picture');
$file = get_sub_field('card_video');
$video = $file['url'];
// check for image
if( $childImage ): ?>
<a data-fancybox="gallery" data-caption="My caption" href="<?php
echo $childImage['url'];//big one here ?>">
<img class="lazy" data-src="<?php echo $childImage['url']; ?>">
</a>
<?php endif; ?>
//check for video
<?php if( $video ): ?>
<video class="gallery-video" loop autoplay>
<source src="<?php echo $video; ?>" type="video/mp4">
</video
<?php endif; ?>
</div> <?php
endwhile;
else :
// no rows found
endif;
?>
//查看视频
我想发布这个问题的答案,因为未来的人们可能会遇到同样的问题。我联系了开发人员,基本上我需要调用砖石布局上的重新计算函数,该函数位于一个函数中,每当新图像加载到屏幕上时,该函数就会触发
最后一件事是这样的:
var macy_instance = Macy.init({
container: '#grid',
trueOrder: false,
waitForImages: true,
debug: true,
margin: 0,
columns: 3,
breakAt: {
1200: 3,
940: 2,
520: 1
}
});
macy_instance.runOnImageLoad(function () { macy_instance.recalculate(true); }, true);
我猜它是在图像加载之前进行布局的。没有一个想法很难说。你可以尝试实现一些类似的东西,然后在返回后调用macy。@MichaelCoker是的,这对我来说似乎也是个问题。这可能是一个愚蠢的问题,但我运行的macy.js init脚本与再次运行macy基本相同吗?因此,如果我将macy init函数插入到images loaded函数中,它基本上会在每次加载所有图像时运行macy,对吗?我还不清楚标签中函数和调用函数之间的关系,我想是的。我没有用过macy.js,所以我不确定。但根据您的经验,您可能只需要调用macy_instance.reInit()代码>而不是每次都调用整个过程。@MichaelCoker噢,太棒了!这太完美了。我将深入研究这个问题,看看我能找出什么。谢谢你:)!当然!希望能有帮助。