【问题标题】:jQuery Masonry layout is breaking when window is resized — fluid seamless photo grid调整窗口大小时,jQuery Masonry 布局中断 - 流畅的无缝照片网格
【发布时间】:2012-03-06 19:01:47
【问题描述】:

我已经发布了video 来解释我的问题。 很抱歉帧速率慢。

当我将窗口缩小得太快时,Masonry jQuery 插件似乎太慢而无法跟上,因此当浏览器调整得太快时会破坏布局。一些项目位于页脚下方,看起来很明显是错误的。

当我重新加载页面时,如视频所示,布局恢复正常。

我觉得有问题的是smartresize

这里是演示页面: http://test.davewhitley.com/not-wp/isotope_test/index.php

这个页面成功地做到了: http://tympanus.net/codrops/collective/collective-2/

javascript:

jQuery(document).ready(function($) {
var CollManag = (function() {
    var $ctCollContainer = $('#ct-coll-container'),
    collCnt = 1,
    init = function() {
        changeColCnt();
        initEvents();
        initPlugins();
    },
    changeColCnt = function() {
        var w_w = $(window).width();
        if( w_w <= 600 ) n = 2;
        else if( w_w <= 768 ) n = 3;
        else n = 4;
    },
    initEvents = function() {
        $(window).on( 'smartresize.CollManag', function( event ) {
            changeColCnt();
        });
    },
    initPlugins = function() {
        $ctCollContainer.imagesLoaded( function(){
            $ctCollContainer.masonry({
                itemSelector : '.ct-coll-item',
                columnWidth : function( containerWidth ) {
                    return containerWidth / n;
                },
                isAnimated : true,
                animationOptions: {
                    duration: 300
                }
            });
        });
        $ctCollContainer.colladjust();
        $ctCollContainer.find('div.ct-coll-item-multi').collslider();
    };
    return { init: init };
})();
CollManag.init();
});

【问题讨论】:

  • 你最后是怎么解决这个问题的?我注意到该网站现已上线,所以假设您已修复它?我有完全相同的问题,很想知道你做了什么让它工作??
  • www.davewhitley.com 只是使用 CSS 来创建缩略图的流体网格,因为所有图像都是方形的。为了简单起见,我放弃了 javascript 方法。我在上面链接的测试站点大部分都可以工作,但是当您调整窗口大小时,图像有时会低于页脚。如果您想出解决方案,请在此处发布。

标签: javascript jquery resize jquery-masonry window-resize


【解决方案1】:

我有同样的问题。我在调整窗口大小时使用了bindResize。我在他们的网站上找到了这个解决方案

Masonry Methods

bindResize 位于masonry.pkgd

$container.masonry({
    itemSelector: '.container'
});

$(window).resize(function () {
    $container.masonry('bindResize')
});

【讨论】:

  • 对于仍在寻找答案的任何人,更简单的方法是销毁当前实例并重新初始化砌体。它帮助了我。准确地说,在当前实例上使用“.destroy”函数,然后以与设置砌体相同的方式重新初始化!
【解决方案2】:

顺便说一句,做得很好。

在某些时候,是的,布局有点疯狂。当然,这只是浏览器处理百分比宽度+砌体的方式。下面是很棒的小提示:

让你的容器更小,但你的图片更大。

.mycontainer { 宽度:24%; ) .mycontainer img { 宽度:101%;高度:自动; )

http://metafizzy.co/blog/beyonce-seamless-fluid-image-masonry/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多