【问题标题】:Animating item size in Isotope: Why is first item wonky?Isotope 中的动画项目大小:为什么第一个项目不稳定?
【发布时间】:2011-09-03 01:39:51
【问题描述】:

我正在学习使用Isotope,偶然发现了作者关于如何使用animate item sizes 的博文。

我已经为我正在开发的项目实现了这一点。它由三个垂直列组成。每个项目为 196 像素 x 70 像素。当你点击一个项目时,它会扩大到 402px x 230px。

所有项目都正确调整大小并导致 Isotope 刷新布局——除了第一个项目。

单击第一项会导致所有后续列表项仅在一个垂直列中排列 - 即使有足够的空间并且项目应该围绕第一项流动。

单击列表中的任何其他项目都会导致正确的行为。只有第一个是不稳定的。任何人都可以看到可能导致这种情况的原因吗?

这是我的测试用例:http://joshrenaud.com/pd/testcase/testcase.html

处理这种调整大小的代码如下所示:

    $('.child').click(function(){
        var $this = $(this);
        if ($this.hasClass('big')) {
            tileStyle = { width: 196, height: 70};
        }
        else {
            tileStyle = { width: 402, height: 230};
        }
        $this.children().children('.childDate').toggle();
        $this.children().children('.childDesc').toggle();
        $this.toggleClass('big');

        $this.find('.child-content').stop().animate( tileStyle );

        $('#container').isotope( 'reLayout' )

    });

【问题讨论】:

  • 我应该指出,无论哪个项目是列表中的第一个,都会发生这种行为。在我的实际原型代码中,我可以选择按不同标准对列表进行排序。排序后,先到先得的都会有这种感觉。

标签: javascript jquery jquery-masonry


【解决方案1】:

经过更多的实验,我找到了答案。 Isotope 有一个名为 columnWidth 的属性,文档表明它是可选的,因为脚本可以从第一项确定列宽。

但是,将 columnWidth 添加到我的 .isotope() 初始化程序后,这件事就可以正常工作了。

$('#container').isotope({
    masonry: { columnWidth : 206 }
});

另外,columnWidth 似乎 与项目的宽度相同。它是项目的宽度,加上装订线(边距)。就我而言,columnWidth 为 206:196(项目宽度)+ 10(装订线/边距)。

【讨论】:

猜你喜欢
  • 2015-02-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
相关资源
最近更新 更多