浏览器刷新后,jquery砌体排水沟放大

时间:2013-01-23 22:47:26

标签: jquery css jquery-plugins jquery-masonry

就像我认为我在使砌体更具响应性方面取得进展一样......

我用这段代码打电话给Masonry:

jQuery(document).ready(function($) {
var CollManag = (function() {
    var $ctCollContainer = $('#grid'),
    collCnt = 1,
    init = function() {
        changeColCnt();
        initEvents();
        initPlugins();
    },
    changeColCnt = function() {
        var w_w = $(window).width();
        if( w_w <= 480 ) n = 1;
        else if( w_w <= 700 ) n = 2;
        else n = 3;
    },
    initEvents = function() {
        $(window).on( 'smartresize.CollManag', function( event ) {
            changeColCnt();
        });
    },
    initPlugins = function() {
        $ctCollContainer.imagesLoaded( function(){
            $ctCollContainer.masonry({
                itemSelector : '.box_item',
                columnWidth : function( containerWidth ) {
                    return containerWidth / n;
                },
                isAnimated : true,
                animationOptions: {
                    duration: 250
                }
            });
        });

    };
    return { init: init };
})();
CollManag.init();

});

它根据视口宽度更改砌体列。

我已经剥离了我的HTML / CSS,所以我只是将一些图像包装在一个div(.box_item)中。这些div具有基于百分比的宽度(我知道浏览器使用%来解决问题)。

一切都运行良好,当我减少浏览器宽度时,我的网格相应地从3,2,1列变化。我对容器之间的间距(一切看起来都相同)特别满意。

如果我将浏览器的大小调整为700px,那么我们所有的排水沟都是相同的(由于浏览器会缩小我的尺寸,因此在最右侧略大)。如果我在此视口处刷新浏览器,则水槽会略微改变宽度。如果我将浏览器的大小调整为1px,我的网格间距会重置。

访问某些视口的人比我调整浏览器大小更重要:)任何想法可能导致此问题? 99%肯定它不是CSS相关的,因为我已经把所有东西都剥掉了。

更新:已使用以下内容替换原始脚本(问题仍然存在):

// load masonry / change layout based on view port
$(document).ready(function(){
    var $container = $('#grid');
    var gutter = 20;
    var min_width = 230;
    $container.imagesLoaded( function(){
        $container.masonry({
            itemSelector : '.box_item',
            gutterWidth: gutter,
            isAnimated: true,
              columnWidth: function( containerWidth ) {
                var box_width = (((containerWidth - 2*gutter)/3) | 0) ;

                if (box_width < min_width) {
                    box_width = (((containerWidth - gutter)/2) | 0);
                }

                if (box_width < min_width) {
                    box_width = containerWidth;
                }

                $('.box_item').width(box_width);

                return box_width;
              }
        });
    });
});

0 个答案:

没有答案