Continuous Looping Page (Not Infinite Scroll)

前端 未结 6 1375
忘掉有多难
忘掉有多难 2020-12-02 21:16

I\'m looking for resources that create scrolling functions like the ones found on these sites:
Outpost Journal
Unfold

Once the scroll bar hits the bottom

相关标签:
6条回答
  • 2020-12-02 22:00

    Adding loop scroll backwards, upgrading @clankill3r answer. It should be something like this.

    $('document').ready(function() {
    
     // We need to duplicate the whole body of the website so if you scroll down you can see both the bottom and the top at the same time. Before we do this we need to know the original height of the website.
     var origDocHeight = document.body.offsetHeight;
    
     // now we know the height we can duplicate the body    
     $("body").contents().clone().appendTo("body");
    
    
     $(document).scroll(function(){ // detect scrolling
    
         var scrollWindowPos = $(document).scrollTop(); // store how far we have scrolled
    
         if(scrollWindowPos >= origDocHeight ) { // if we scrolled further then the original doc height
             $(document).scrollTop(scrollWindowPos + origDocHeight); // then scroll to the top
         } else if (scrollWindowPos == 0) { // if we scrolled backwards
             $(document).scrollTop(origDocHeight);
         }
     });
    });
    

    I'm using it horizontally and it's working just fine. Hope someone finds it useful.

    0 讨论(0)
  • 2020-12-02 22:02

    Try this:

       $('document').ready(function() {
                 $(document).scroll(function(){
                 if(document.documentElement.clientHeight + 
                 $(document).scrollTop() >= document.body.offsetHeight )$(document).scrollTop(0);
                 });
              }); 
    
    0 讨论(0)
  • 2020-12-02 22:02

    Here a solution that makes a duplicate of the body so the bottom and the top can be seen at the same time at a certain point so the transition is smoother.

    $('document').ready(function() {
    
         // We need to duplicate the whole body of the website so if you scroll down you can see both the bottom and the top at the same time. Before we do this we need to know the original height of the website.
         var origDocHeight = document.body.offsetHeight;
    
         // now we know the height we can duplicate the body    
         $("body").contents().clone().appendTo("body");
    
    
         $(document).scroll(function(){ // detect scrolling
    
             var scrollWindowPos = $(document).scrollTop(); // store how far we have scrolled
    
             if(scrollWindowPos >= origDocHeight ) { // if we scrolled further then the original doc height
                 $(document).scrollTop(0); // then scroll to the top
             }       
         });
    
     }); 
    
    0 讨论(0)
  • 2020-12-02 22:04

    Forked from @clankill3r's answer, create two copy of body, prepend and append to the original body, then you can scroll the page in two direction endless.

    $('document').ready(function() {
    
        var origDocHeight = document.body.offsetHeight;
    
        var clone=$("body").contents().clone();
        clone.appendTo("body");
        clone.prependTo("body");
    
        $(document).scroll(function(){ 
    
            var scrollWindowPos = $(document).scrollTop(); 
    
            if(scrollWindowPos >= origDocHeight ) { 
                $(document).scrollTop(0); 
            }
            if(scrollWindowPos <= 0 ) { 
                 $(document).scrollTop(origDocHeight); 
             }        
        });
    });
    
    0 讨论(0)
  • 2020-12-02 22:12

    if you want infinite scroll in both directions use

    if (document.documentElement.clientHeight + $(window).scrollTop() >= $(document).height()) {
        $(document).scrollTop(0)
    } else if ($(window).scrollTop() < 0) {
        $(document).scrollTop($(document).height())
    }
    

    (I know it's a late reply but it still helps users like me who just google stuff like this)

    0 讨论(0)
  • 2020-12-02 22:18

    mrida's answer was causing my browser to not be able to scroll, here is a modified version that worked for me:

      $('document').ready(function() {
        $(document).scroll(function(){
          if (document.documentElement.clientHeight + $(window).scrollTop() >= $(document).height()) {
            $(document).scrollTop(0);
          }
        });
      });
    
    0 讨论(0)
提交回复
热议问题