Я использую масонство для компоновки ряда статей, сначала спрятав все и обнаружив предметы, когда макет завершает огонь. Это работает так, как планировалось, когда размещено более одной статьи, но когда один из них присутствует, макет остается скрытым. Я тоже использую Modernizr (см. Ниже).Как обнаружить layoutComplete, когда jQuery Masonry позиционирует только один элемент?
Вот мой код:
CSS (SASS):
.js-masonry, [data-masonry-options] {
@include media-query(lap-and-up) {
html.js & {
visibility: hidden;
}
html.js &.masonry-loaded {
visibility: visible;
}
}
}
Javascript:
var $container = $('.js-masonry').masonry();
$container.imagesLoaded(function() {
$container.masonry({
"columnWidth": ".grid-sizer",
"gutter": ".gutter-sizer",
"itemSelector": ".item",
"percentPosition": true
});
$container.masonry('on', 'layoutComplete', function() {
$container.addClass('masonry-loaded');
});
});
Кладка если определенно добавление встроенных стилей к одному пункту, но layoutComplete не стреляет. Есть ли трюк, или я обнаружил ошибку?
Итак, близко! Мы не можем прикрепить событие layoutComplete вне изображенийLoaded, потому что кладка не была инициализирована. Я решил отступить к подходу vanilla js, и это сработало. См. Мой ответ для решения. –