javascript - 在同位素中加载页面后的堆叠图像

标签 javascript jquery html image jquery-isotope

我的页面包含图像和基于 isotope 技术的过滤器。 问题是,加载页面后图像堆叠在一起。 在使用过滤器(选项 abc)之后,图像将按照预期的方式展开。

$(function() {
    var grid = $('#portfolio .grid').isotope({
        itemSelector: '.work',
        layoutMode: 'fitRows'
    });

    $('#portfolio .filter').on( 'click', 'button', function() {
        var el = $(this);

        grid.isotope({
            filter: el.data('filter')
        });

        el.addClass('checked').siblings().removeClass('checked');
    });
});

jsfiddle link .

要模拟首次加载,请在 Firefox 中点击 CTRL + F5Shift+Cmd+R 在 Mac 上。

我用 link 尝试了这个修复.图像未堆叠,但现在过滤器已损坏。

$(function() {
    var grid = $('#portfolio .grid').isotope({
        itemSelector: '.work',
        layoutMode: 'fitRows'
    });

    // recommendation found at isotope.metafizzy.co/layout.html#imagesloaded
    $grid.imagesLoaded().progress( function() {
        $grid.isotope('layout');
    });

    $('#portfolio .filter').on( 'click', 'button', function() {
        var el = $(this);

        grid.isotope({
            filter: el.data('filter')
        });

        el.addClass('checked').siblings().removeClass('checked');
    });
});

jsfiddle link .

如何删除堆叠的图像并使用有效的滤镜?

最佳答案

你的第二个 jsfiddle 有两个问题:

        $(function() {
            var grid = $('#portfolio .grid').isotope({
                itemSelector: '.work',
                layoutMode: 'fitRows'
            });

            // recommendation found at isotope.metafizzy.co/layout.html#imagesloaded
            $grid.imagesLoaded().progress( function() {
                $grid.isotope('layout');
            });

            $('#portfolio .filter').on( 'click', 'button', function() {
                var el = $(this);

                grid.isotope({
                    filter: el.data('filter')
                });

                el.addClass('checked').siblings().removeClass('checked');
            });
        });

https://jsfiddle.net/martinrusina/eLf4ynna/13/

首先,$grid 没有定义。您定义的网格不是 $grid。

其次,您没有包含用于同位素的 imagesLoaded 库,因此 imagesLoaded 也是未定义的。

这是一个包含库并使用网格而不是 $grid 的工作版本:

// Includes https://unpkg.com/imagesloaded@4.1.1/imagesloaded.pkgd.min.js

        $(function() {
            var grid = $('#portfolio .grid').isotope({
                itemSelector: '.work',
                layoutMode: 'fitRows'
            });

            // Updates grid after each image being loaded
            //grid.imagesLoaded().progress( function() {
            //  grid.isotope('layout');
            //});

            // updates grid after all images are loaded.
            grid.imagesLoaded( function() {
              grid.isotope('layout');
            });

            $('#portfolio .filter').on( 'click', 'button', function() {
                var el = $(this);

                grid.isotope({
                    filter: el.data('filter')
                });

                el.addClass('checked').siblings().removeClass('checked');
            });
        });

Working jsfiddle

关于javascript - 在同位素中加载页面后的堆叠图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692014/

相关文章:

python - Web 抓取带有 <pre> 预格式化文本且没有标签的 .htm 页面

html - Bootstrap 多个 Accordion ,但一次只打开一个面板

Javascript : problem with 'this'

javascript - 为什么 isPrototypeOf 返回 false,但我可以沿着原型(prototype)链向上?

javascript - jquery 在自定义函数中使用 (this)

jquery - 将父级的悬停应用于 jquery ui 自动完成子级

javascript - 如何使用slideDown()显示动态生成的元素?

javascript - Jquery 自定义照片幻灯片同时显示所有图像而不是一个然后下一个

javascript - CSS3 - 如何交叉淡化未知高度的图像并将它们垂直和水平居中

javascript - 包含外部 JS 文件的 NodeJS Express sendFile