【问题标题】:Masonry Infinite Scroll overlapping divs砌体无限滚动重叠div
【发布时间】:2014-11-18 00:22:25
【问题描述】:

这似乎是很多人都遇到过并且似乎能够解决的常见问题,但就我而言,似乎没有一个解决方案适合我。

页面加载完美,但在滚动和附加更多砖块时发生重叠。此外,这似乎只发生在我第一次登陆页面时。如果我在所有内容都已加载后刷新,则向下滚动时不会重叠。我认为 imagesLoaded 应该处理这个但不能正常工作。不知道我哪里出错了。

作为参考,这里是我遇到问题的页面: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>

从我注释掉的行中可以看出,我尝试了多种变体来防止元素重叠。没有运气。每次尝试写这篇文章时,我都会遇到同样的问题。

非常感谢任何帮助。

【问题讨论】:

    标签: javascript jquery wordpress infinite-scroll masonry


    【解决方案1】:

    您的混合砖石和同位素。你最初是用砖石加载的,然后你用这样的无限滚动调用同位素:

        $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 );
    

    【讨论】:

    • 感谢@Macsupport 的回复。不幸的是,我已经为此尝试过。实际上,您可以在对 $container.isotope() 的调用下方的注释行中看到我已经尝试过的地方。当我注释掉这一行时: $container.isotope( 'appended', $newElems );并取消注释该行: $container.masonry( 'appended', $newElems, true );我仍然得到相同的结果。
    • 它们不能互换使用。您的站点上有 masonry.js,因此您需要使用它,而不是同位素调用。另外,您还加载了其他代码,masonry-isotope.js,它需要在砌体之后而不是之前加载。您需要显示更多代码。做一个jsfiddle。
    • 忘记我什至使用了isotope()的调用。最初那甚至从来都不是我的代码的一部分。就像我说的,即使使用 $container.masonry() 而不是 $container.isotope(); 它也根本不起作用。当我有时间时,我会做一个小提琴,但我不认为这是这里的问题。另外,这就是我的所有代码。你还需要什么代码? HTML?我还链接到我遇到问题的在线页面。所有的代码也都在那里。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多