6

我正在使用 jQuery Isotope 创建一个水平布局,将 100% 高度的 DIV 对齐,并将每个 DIV 内的图像垂直居中。因此,我像这样调用 Isotope,并且在 Chrome(本地)中一切正常:

$(function(){
    var $container = $('#container');
    $container.isotope({
        itemSelector : '.itemwrap',
        layoutMode: 'horizontal',
        horizontal: {
            verticalAlignment: 0.5
        }
    });
});

由于图像需要时间加载,它们往往会弄乱同位素布局,所以我正在尝试使用 imagesLoaded 修复:http: //isotope.metafizzy.co/appendix.html

我像这样实现了这个修复:

$(function(){
    var $container = $('#container');
    $container.imagesLoaded( function(){
        $container.isotope({
            itemSelector : '.itemwrap',
            layoutMode: 'horizontal',
            horizontal: {
                verticalAlignment: 0.5
            }
        });
    });
});

使用此 imagesLoaded,同位素不再加载。删除 imagesLoaded,Isotope 再次启动(但布局混乱)。有谁知道,错误在哪里?

谢谢!

4

2 回答 2

3

您也可以使用此实现,因此您可以在图像单独加载到网格时显示图像,而不是等待所有内容加载,代码如下所示:

jQuery(document).ready(function(){

     // Initialize Isotope

     $('.grid').isotope({
        itemSelector: '.item',
        percentPosition: true,
     });

     // Refresh the layout of the grid each time an image gets loaded

     $('.grid').imagesLoadedMB().progress( function() {
        $('.grid').isotope('layout');
    });

});

我个人更喜欢使用一个现成的插件,比如这个:https ://codecanyon.net/item/media-boxes-portfolio-responsive-grid/5683020使用这个插件你可以很容易地指定项目,每个分辨率的列数等等,它还具有添加过滤器,排序和搜索字段的能力,试试吧!

于 2017-03-07T16:51:38.083 回答
0

我最近也遇到了同样的问题,发现这是由于异步调用造成的。$container.imagesLoaded()在加载图像加载插件之前调用您的函数。

您只需要从 jquery 脚本行中$container.imagesLoaded()换行$(document).ready()并删除attr 。asyn

于 2015-10-19T10:28:01.993 回答