创建具有 div 内容的无限滚动循环

Creating an infinite scroll loop with div contents

所以我想对 <div> 中的所有项目进行无限循环,其中 overflow 已设置为 auto

它应该可以工作,以便每当您到达 <div> 的末尾时,最上面的内容会再次出现,并在无限滚动循环中继续。

有什么方法可以仅使用 Javascript 和 CSS...

这是我的项目: https://jsfiddle.net/RutRock/hb6y3ead/5/(并非一切正常,但右侧的小部件)。

这里是需要循环的<div>(红圈)。

您可以使用window.scrollY 属性 并检查它是否接近无限滚动元素的高度。然后,在将原始元素 innerHTML 保存到变量中后,您 insertAdjacentHTML 进入无限滚动。坦率地说,我自己从来没有这样做过,但这似乎是一个很好的解决方案。

document.addEventListener( "DOMContentLoaded", function() {
  // it's a div, that holds your news
  // it holds ul with news in li elements
  var div = document.getElementById( "container" );
  div.addEventListener( "scroll", function() {
    var max_scroll = this.scrollHeight - this.clientHeight;
    var current_scroll = this.scrollTop;
    var bottom = 100;
    if ( current_scroll + bottom >= max_scroll ) {
      var ul = document.getElementsByTagName( "ul" )[ 0 ];
      var current = parseInt( ul.dataset.current, 10 );
      var li = document.getElementsByTagName( "li" )[ current ];
      var new_li = li.cloneNode( true );
      ul.appendChild( new_li );
      ul.dataset.current = current + 1;
    }
  } );
} );
div.block {
  border: 1px solid #000000;
  max-width: 200px;
  max-height: 400px;
  overflow-y: auto;
}
div.block::-webkit-scrollbar {
    display: none;
}
ul {
  list-style-type: none;
}
<div class="block" id="container">
  <ul data-current="0">
    <li>
      <h3>Post 0</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 1</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 2</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 3</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 4</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 5</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 6</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
    <li>
      <h3>Post 7</h3>
      <img src="https://lh3.googleusercontent.com/a-/AAuE7mAEKlOpfNWWj9nu8pkQOxNbbEu_kQCFCI1z8nNFXQ=k-s32" />
    </li>
  </ul>
</div>

尝试在向下滚动时按顺序克隆元素。
并且不要忘记记住最后一个克隆的元素 - 我将它存储到 data- 属性。