响应式砌体jQuery布局示例

时间:2012-01-28 17:46:19

标签: jquery responsive-design fluid-layout jquery-masonry

有人可以建议这个网站如何使用jQuery Masonry插件来实现其响应性,流畅的布局吗?

http://tympanus.net/codrops/collective/collective-2/

具体而言;

在浏览器调整大小时,列数从3变为2,这是您对使用砌体的网站的期望,但有趣的是列也会调整大小以始终填充可用的整个宽度。我见过的大多数其他砌体网站都会在列的右侧留下空白,因为列数会发生变化(例如http://masonry.desandro.com/)或列填充整个宽度但列数保持不变({{3} })。他们是否动态设置浏览器调整大小与CSS媒体查询相结合的列数,或者他们是否正在使用CSS3列?

感谢。

1 个答案:

答案 0 :(得分:16)

这是我们正在考虑的准则。

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 = 1;
            else if( w_w <= 768 ) n = 2;
            else n = 3;
        },
        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: 400
                    }
                });
            });
            $ctCollContainer.colladjust();
            $ctCollContainer.find('div.ct-coll-item-multi').collslider();
        };
        return { init: init };
    })();
    CollManag.init();
}); 

基本思想似乎是添加一个columnselector,它可以找出可以设置的列数。第二步是在函数中使用smartresize event。第三步是用“动态”宽度的列调用砖石。玩得开心:))