我在一个项目中使用了同位素,出于某种奇怪的原因,我无法使其像demo一样工作(单击元素#26 Iron,您会注意到#30 Zinc如何向上移动以填充空白空间大块将离开)。

这是jsfiddle of where im at。请注意,当您单击类别2时,类别3和4应该有两个黑色的空格。

这是我的同位素js:

$(document).ready(function() {
  var $iContainer = $('#ls-container');

  $iContainer.isotope({
    itemSelector : '.ls-item',
    layoutMode : 'masonry',
    masonry : {
      columnWidth : 170
    }
  });

  $iContainer.delegate( '.ls-item', 'click', function() {
    $(this).addClass('large-item').siblings().removeClass('large-item');
    $iContainer.isotope('reLayout');

  });

});​

最佳答案

您所看到的差距就是砌体布局算法的工作方式。 See Masonry issue #141

但是我们可以通过排序来破解。请参见this fiddle。技术类似于to this article

$iContainer.isotope({
  itemSelector : '.ls-item',
  layoutMode : 'masonry',
  masonry : {
    columnWidth : 170
  },
  getSortData: {
    largeFirst: function( $elem ) {
      var isLarge = $elem.hasClass('large-item');
      var index = $elem.index();
      return isLarge ? index - index % 3 - 0.5: index;
    }
  }
});

$iContainer.delegate( '.ls-item', 'click', function() {
  $(this).addClass('large-item').siblings().removeClass('large-item');
  // update sortData for all items
  $iContainer.isotope( 'updateSortData', $iItem )
        .isotope({ sortBy: 'largeFirst' });

});

关于javascript - jQuery插件同位素无法正确重新排列项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13466521/

10-12 06:35