2013-04-06 2 views
0

Я реализую масонство с бесконечным прокруткой по теме Tumblr - что-то, что я успешно сделал раньше, но я просто не могу заставить это остановить «нарушение», и рассеивание изображений вокруг. Отчаяние!JQuery Масонство ломается после первого изображения, загружает странные пробелы

Демо-версия: neuraldamage-theme4.tumblr.com (пароль гость).

Я попытался удалить все из тега тела, кроме #posts div и его содержимого (и, конечно же, скрипта), но проблема осталась - поэтому кажется, что это не должно быть проблемой с окружающие divs.

Вот мой сценарий:

$(document).ready(function() { 
    $('#post-video iframe').attr('width', '300'); // resize embedded videos 
}); 

var $container = $('#posts'); 

$container.imagesLoaded(function(){ 
    $container.masonry({ 
     itemSelector : '.post', 
     columnWidth : 300 
    }); 
}); 

$container.infinitescroll({ 
    navSelector : '#pagination', // selector for the paged navigation 
    nextSelector : '#pagination li a.pagination_nextlink', // selector for the NEXT link (to page 2) 
    itemSelector : '.post',  // selector for all items you'll retrieve 
    loading: { 
     finishedMsg: '', 
     img: 'http://static.tumblr.com/6u5yyqj/iUtmgivzo/loading.gif', // http://static.tumblr.com/6u5yyqj/iUtmgivzo/loading.gif, http://static.tumblr.com/6u5yyqj/yWkmgj1jq/loadingdark.gif 
    } 
    }, 
    // trigger Masonry as a callback 
    function(newElements) { 
     var $newElems = $(newElements); 
     $container.masonry('appended', $newElems); 
    } 
); 

И вот что я встроили, просто убедитесь, что оно было до настоящего времени:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="http://static.tumblr.com/6u5yyqj/MPKmktfkv/jquery.masonry.min.js"></script> 
<script src="http://static.tumblr.com/6u5yyqj/nsQmkth3k/jquery.infinitescroll.min.js"></script> 

И если вы 'd, чтобы увидеть полный код: gist.github.com/neuraldamage/5307289

Если кто-то может взломать это, я был бы очень благодарен!

+0

Боковое примечание: не используйте cdn cloudflare для вашего jquery.easing. Это не загрузка и заставляет страницу зависать. – graygilmore

+0

Спасибо, что сообщили мне - я возьму его в другом месте. – Nails

ответ

0

Это запугивание проблем, потому что на самом деле у вас есть несколько <div id="posts">. Вероятно, проблема с вашим кодом Tumblr выплевывает больше, чем нужно.

+0

Вот и все! По какой-то причине он сбрасывает весь «пост» div несколько раз, хотя он появляется только один раз в моем HTML (HTML, который я фактически вставляю в Tumblr, а не HTML, который вы видите, если вы просматриваете источник на странице). Для меня это полная тайна, почему она это делает - я начал использовать тот же HTML-скелет (и более старую версию скрипта, которую я успешно использовал раньше), и на этот раз у меня нет проблем. Благодаря! – Nails

0

Вопрос заключается в следующем:

<div id="posts" style="position: relative; height: 483px;" class="masonry"> 

изменение, высота для размещения вашего контента (как это не достаточно большой), или просто не объявить его вообще.

Когда я осмотрел элемент, я просто удалил значение height, и все переместилось на место.

+0

Вот что я не объявляю. В div #posts буквально нет стиля. Я пробовал использовать высоту: 100% и даже абсолютное позиционирование, но не кубики. – Nails

+0

Я боялся этого. Лучший вариант - отладить его и изолировать линию плагина, который вычисляет это значение, а затем выяснить, почему он не делает это правильно. Более быстрое (и более грязное) решение состоит в том, чтобы программно изменить высоту самостоятельно * после того, как * плагин делает свою работу, например. в запрошенном вами обратном вызове. Самый грязный вариант по-прежнему остается жизнеспособным, и это объявляет '#posts {height: 100%! Important;}' в вашем css - это ** будет работать **, но это обескураживает. – couzzi

+0

Спасибо, но ... Я пробовал самое грязное решение (так как остальные два находятся за пределами моих навыков JS), и теперь они все-таки раскалываются друг на друга. Обновлена ​​демо-версия. – Nails