При изменении размера окна макет jQuery Masonry ломается - плавная бесшовная сетка для фотографий - PullRequest
4 голосов
/ 06 марта 2012

Я разместил видео , объясняющее мою проблему. Извините за медленную частоту кадров.

Когда я слишком быстро сжимаю окно, плагин 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();
});

Ответы [ 2 ]

3 голосов
/ 29 марта 2014

У меня была такая же проблема.Я использовал bindResize для изменения размера окна.Я нашел это решение на их сайте

Методы масонства

bindResize в masonry.pkgd

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

$(window).resize(function () {
    $container.masonry('bindResize')
});
0 голосов
/ 24 января 2013

Кстати, отличная работа.

В определенные моменты, да, макет немного сходит с ума. Конечно, это связано только с тем, как браузеры обрабатывают процентную ширину + кладку. Отличный маленький совет ниже:

Сделайте ваш контейнер меньше, но ваши изображения больше.

.mycontainer {ширина: 24%; ) .mycontainer img {width: 101%; высота: авто; )

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

...