【问题标题】:Responsive Masonry jQuery layout example响应式砌体 jQuery 布局示例
【发布时间】:2013-08-29 10:48:58
【问题描述】:

谁能建议这个网站如何使用 jQuery Masonry 插件来实现其响应式、流畅的布局?

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

具体;

在浏览器调整大小时,列数从 3 变为 2 再到 1,这是您对使用砖石的网站所期望的,但有趣的是列也会调整大小以始终填充可用的整个宽度。随着列数的变化(例如http://masonry.desandro.com/)或列填充全宽但列数保持不变(http://masonry.desandro.com/demos/fluid.html),我见过的大多数其他砌体站点在列的右侧留下间隙。他们是结合 CSS 媒体查询动态设置浏览器调整大小的列数,还是他们正在使用 CSS3 列?

谢谢。

【问题讨论】:

  • 我们一定不会看到同样的东西,因为它对我来说不是这样:i.stack.imgur.com/08sMz.png 我认为他们只是使用带有动画的标准 Masonry 示例(没看) .您可以随时自行查看源代码...
  • 奇怪,在使用 Chrome 17、Safari 5.1.2 或 Firefox 9.0.1 的 OS X Lion 中,它看起来像这样; cl.ly/DjIr。我查看了源代码,但无法弄清楚它是如何完成的。

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


【解决方案1】:

这是我们正在查看的代码。

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();
}); 

基本的想法似乎是添加一个列选择器,它找出可以设置多少列。第二步是在函数中使用smartresize event。第三步是使用列的“动态”宽度调用砌体。玩得开心:)

【讨论】:

  • 感谢 some_guy,这很奏效。我只需要添加一些媒体查询来将 .ct-coll-item 的最大宽度设置为 600 和 768。
  • 很高兴知道它有效。并感谢您对它的关注,我也在寻找类似的东西,我想我现在也会尝试在我的网站中实现它!
  • 你能用一些我正在搜索的例子详细说明一下
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 2014-06-14
  • 2013-03-20
  • 1970-01-01
  • 2013-03-20
  • 2015-01-08
  • 2012-10-22
  • 1970-01-01
相关资源
最近更新 更多