2012-01-28 5 views
13

Может ли кто-нибудь предложить, как этот сайт использует плагин jQuery Masonry для гибкой, гибкой компоновки?Отзывчивая масонство Пример макета jQuery

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

В частности;

Число столбцов изменяется от 3 до 2 до 1 по размеру браузера, что является тем, чего вы ожидаете от сайта с использованием кладки, но интересно, что столбцы также изменяют размер, чтобы всегда заполнять всю доступную ширину. Большинство других сайтов масонства, которые я видел, оставляют пробелы справа от столбцов при изменении количества столбцов (например, http://masonry.desandro.com/) ИЛИ столбцы заполняют всю ширину, но столбцы номера fo остаются неизменными (http://masonry.desandro.com/demos/fluid.html). Являются ли они динамически устанавливают количество столбцов при изменении размера браузера в сочетании с мультимедийными запросами CSS или, возможно, они используют столбцы CSS3?

Спасибо.

+0

Мы не должны видеть одно и то же, потому что это не делает для меня: http://i.stack.imgur.com/08sMz.png Я думаю, что они просто используют стандартный пример масонства с анимацией (не смотрел). Вы всегда можете проверить исходный код самостоятельно ... –

+0

Странно, в OS X Lion с использованием Chrome 17, Safari 5.1.2 или Firefox 9.0.1 выглядит так: http://cl.ly/DjIr. Я посмотрел на исходный код, но не мог понять, как это было сделано. – robflate

ответ

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. Третий шаг - вызвать кладку с «динамической» шириной столбцов. Удачи :)

+1

Спасибо some_guy, что сработало удовольствие. Мне просто нужно было добавить некоторые медиа-запросы, чтобы установить максимальную ширину .ct-coll-item на 600 и 768. – robflate

+0

Приятно знать, что это работает. и спасибо, что обратил мое внимание на это, я также искал аналогичный, и я думаю, теперь я попытаюсь реализовать это и на своем сайте! –

+0

спас мою задницу: D – PriteshJ