Я работаю над этим в течение некоторого времени.imagesLoaded функция jquery, не работающая с кладкой
Я пытаюсь использовать функцию fadein после того, как весь загруженный контент был загружен и был применен соответствующий макет кладки. Исследовали это в нескольких местах, пробовали разные версии imagesLoaded plugin, но, похоже, не могли заставить его работать.
Это мой основной HTML структура:
<div id="posts">
<article class="post text clearfix">
// text post etc
</article>
</div>
Я зову кладку, а затем imagesLoaded JQuery плагин.
Мои js выглядят так (я понимаю, что мне нужно установить отображение: none в css в какой-то момент).
<script type="text/javascript">
$(document).ready(function() {
var $eachContainer = $('.post');
$eachContainer.hide();
var $wall = $('#posts');
$wall.imagesLoaded(function() {
$eachContainer.fadeIn();
$wall.masonry({
columnwidth: 84,
itemSelector : '.post'
});
});
});
</script>
Я попытался выполнить вышеуказанное в функции window.load. Кажется, что при этой функции каменная колонкаWidth не вычисляется.
У меня на самом деле есть два tumblrs, где этот код тестируется.
- http://kidsofdada.tumblr.com/ (это работает, но я хочу изображения исчезать после кладки сетка была установлена.
- http://childofdada.tumblr.com/ изображения выцветания, но кладка границы не устанавливать должным образом, а также не изменение размера, когда браузер перетаскивается .
EDIT 1:
Я попытался перекодировать выше функции, используя пример, приведенный на сайте плагин Так что теперь мой код выглядит следующим образом:.
var container = document.querySelector('#posts');
var msnry = new Masonry(container, {
columnWidth: 84,
itemSelector: '.post',
isInitLayout: false
});
msnry.on('layoutComplete', function() {
console.log('layout is complete');
$('.post').fadeIn();
});
При загрузке страницы все сообщения скрыты. Как связать функцию только с функциями window.load или document.ready? При изменении размера браузера, это вызывает и будет отображать сообщения: http://childofdada.tumblr.com/
EDIT 2:
Попытки реализовать код ложного флага, я понимаю, что, возможно, это написано неправильно (попробовали переключая его).
var firstTime = 'false';
var container = document.querySelector('#posts');
var msnry = new Masonry(container, {
columnWidth: 84,
itemSelector: '.post',
isInitLayout: false
});
if (firstTime == 'false') {
msnry.on('layoutComplete', function() {
console.log('layout is complete');
$('.post').fadeIn();
firstTime = 'true';
});
}
Думаю, вы должны использовать кладку 'layoutComplete' события вместо этого. –
Хмм, я собираюсь изменить свой вопрос, потому что я думаю, что макет срабатывает каждый раз, когда макет изменяется (например, с помощью изменения размера). Мне нужно, чтобы он выполнялся только при загрузке исходного документа. – lharby
В худшем случае используйте флаг, например. 'var firstTime = false;' затем установить значение true в 'layoutComplete' и выполнить ваш код только при' false'. –