2014-11-18 3 views
0

Это, по-видимому, общая проблема, которую многие люди и, похоже, могут исправить, но в моем случае ни одно из решений, похоже, не работает для меня.Масонство Бесконечная прокрутка перекрывающихся divs

Страница загружается идеально, но перекрытие происходит при прокрутке и добавлении большего количества кирпичей. Кроме того, это происходит, только когда я впервые попал на страницу. Если я обновляюсь после того, как все уже загружено, при прокрутке нет перекрытия. Я думал, что imagesLoaded должен был обрабатывать это, но не работать atm. Не знаю, где я ошибся.

Для справки, вот страница, на которой я имею вопрос: http://isaacprice.me/blog/

Вот что мой код выглядит сейчас:

<script> 

    jQuery(function($) { 
     var $container = $('#all_posts'); 

     $container.imagesLoaded(function() { 
     var $msnry = $container.masonry({ 
       columnWidth: 240, 
       gutter: 20, 
       itemSelector: '.item', 
       "isFitWidth": true 
      }); 
     }); 

     $container.infinitescroll(
     // trigger Masonry as a callback 
     function(newElements) { 
      // hide new items while they are loading 
      var $newElems = $(newElements).hide(); 
      // ensure that images load before adding to masonry layout 
      //$newElems.imagesLoaded(function(){ 

      // show elems now they're ready 


      $msnry.append($newElems).delay(500).imagesLoaded(function() { 
       $newElems.fadeIn(); 
       $container.isotope('appended', $newElems); 
       //$msnry.append($newElems).masonry('appended', $newElems, true); 
      //$container.masonry('appended', $newElems, true); 
      }); 
      //}); 
     } 
    ); 
    }); 
    </script> 

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

Любая помощь будет очень оценена.

ответ

0

Смешанная кладка и изотоп. Вы сначала загружаются с кладкой, а затем вы вызываете изотоп с infinitescroll так:

$msnry.append($newElems).delay(500).imagesLoaded(function() { 
      $newElems.fadeIn(); 
      $container.isotope('appended', $newElems); //WRONG!! 
      //$msnry.append($newElems).masonry('appended', $newElems, true); 
     //$container.masonry('appended', $newElems, true); 

Попробуйте вместо этого:

$container.imagesLoaded(function() { 
      $newElems.fadeIn();   
     $container.masonry('appended', $newElems, true); 
+0

Спасибо за ответ @Macsupport. К сожалению, я уже пробовал это с той же целью. Фактически, вы можете видеть в комментариях строки под вызовом $ container.isotope(), где я уже пробовал это. Когда я прокомментирую строку: $ container.isotope ('appended', $ newElems); и раскомментируйте строку: $ container.masonry ('appended', $ newElems, true); Я все равно получаю тот же результат. – codeguerrilla

+0

Их нельзя использовать взаимозаменяемо. У вас есть masonry.js на вашем сайте, поэтому вам нужно использовать это, а не изотопные вызовы. Кроме того, у вас есть другой загруженный код, masonry-isotope.js, который необходимо загрузить после кладки, а не раньше. Вам нужно показать больше кода. Сделайте jsfiddle. – Macsupport

+0

Забудьте, что я даже использовал вызов isotope(). Первоначально это никогда не было частью моего кода. Как я уже сказал, он вообще не работает даже при использовании $ container.masonry() вместо $ container.isotope(); Я сделаю скрипку, когда у меня будет время, но я бы не подумал, что это проблема здесь. Кроме того, это все мой код. Какой еще код вам нужен? HTML? Я также связался со страницей в Интернете, где у меня возникла проблема. весь код тоже есть. Спасибо за вашу помощь. – codeguerrilla

Смежные вопросы