Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确堆叠砌体布局和延迟加载图像?_Javascript_Jquery_Html_Css_Wordpress - Fatal编程技术网

Javascript 如何正确堆叠砌体布局和延迟加载图像?

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

好的,我正在为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 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噢,太棒了!这太完美了。我将深入研究这个问题,看看我能找出什么。谢谢你:)!当然!希望能有帮助。