同位素和 jquery UI 碰撞

发布于 2024-12-04 07:46:08 字数 1377 浏览 1 评论 0原文

我正在做一个砖石风格的页面,其中的框在单击时会展开。 我已经编写了 javascript 代码,以便当单击另一个框时,所有其他框将默认为其原始大小;也就是说:一次只会扩展一个盒子。

效果很好!

问题是同位素不会调整盒子的大小,只会调整位置!

因此,我调用了 jquery UI 插件来为切换类函数设置动画,这样不仅元素的重新定位将被动画化,而且元素本身的扩展也会被动画化。

但可惜的是,jquery UI 和 isotope 中的某些东西不太适合在一起,这意味着元素的重新定位在某种程度上会混乱。

这些示例的 javascript 代码是这样的:

首先是有效的:

    $(document).ready(function() {

    var $container = $('#masonrycontainer');

    $($container).isotope({
            masonry : {
            columnWidth : 100
        }
    });

    // change size of clicked element
    $container.delegate( '.isotopeelement', 'click', function(){
    $('.isotopeelement').not(this).removeClass('maxsize');
    $(this).toggleClass('maxsize');
    $container.isotope('reLayout');
    return false;
  });

});

然后是无效的(请注意,毫秒是两个示例之间的唯一区别):

    $(document).ready(function() {

    var $container = $('#masonrycontainer');

    $($container).isotope({
            masonry : {
            columnWidth : 100
        }
    });

    // change size of clicked element
    $container.delegate( '.isotopeelement', 'click', function(){
    $('.isotopeelement').not(this).removeClass('maxsize', 300);
    $(this).toggleClass('maxsize', 300);
    $container.isotope('reLayout');
    return false;
  });

});

有谁知道问题是什么,或者如何解决它?预先非常感谢大家。

//一个。

I am doing a masonry-style page with boxes that expand when clicked.
I have made the javascript code so that all other boxes will default to their original size when another box is clicked; that is: only one box will be expanded at a time.

It works fine!

The thing is that isotope doesn't animate the resizing of boxes, only the repositioning!

So I've invoked the jquery UI plugin to animate that toggle class function, so that not only the repositioning of elements will be animated, but also the very expanding of the element itself.

BUT alas, something in jquery UI and isotope doesn't quite fit together, meaning that the repositioning of elements somehow messes up.

The javascript code for the examples is this:

First the one that works:

    $(document).ready(function() {

    var $container = $('#masonrycontainer');

    $($container).isotope({
            masonry : {
            columnWidth : 100
        }
    });

    // change size of clicked element
    $container.delegate( '.isotopeelement', 'click', function(){
    $('.isotopeelement').not(this).removeClass('maxsize');
    $(this).toggleClass('maxsize');
    $container.isotope('reLayout');
    return false;
  });

});

Then the one that doesn't work (notice that the milliseconds is the only difference between the two examples):

    $(document).ready(function() {

    var $container = $('#masonrycontainer');

    $($container).isotope({
            masonry : {
            columnWidth : 100
        }
    });

    // change size of clicked element
    $container.delegate( '.isotopeelement', 'click', function(){
    $('.isotopeelement').not(this).removeClass('maxsize', 300);
    $(this).toggleClass('maxsize', 300);
    $container.isotope('reLayout');
    return false;
  });

});

Does anyone know what the problem is, or how to solve it? Thank you all very much in advance.

//A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光下的泡沫是彩色的 2024-12-11 07:46:08

请参阅同位素 - 动画项目大小。它包含一个 4 分钟的视频,介绍您遇到的问题。

See Isotope - Animating item sizes. It features a 4 minute video on the problem you're running into.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文