2017-10-03 3 views
0

Mon code de défilement lisse pour javascript ne fonctionne pas. Je ne sais pas pourquoi. Il ne fait simplement pas défiler et dirige vers le bas de la page. Je suis nouveau à javascript alors, s'il vous plaît dites-moi si je dois substituer n'importe quelle adresse de ma page de site Web dans le codage de javascript. MerciDéfilement lisse

<script type="text/javascript"> 
$(function() { 
    var $window = $(window), $document = $(document), 
     transitionSupported = typeof document.body.style.transitionProperty === "string", // detect CSS transition support 
     scrollTime = 1; // scroll time in seconds 

    $(document).on("click", "a[href*=#]:not([href=#])", function(e) { 
     var target, avail, scroll, deltaScroll; 

     if (location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") && location.hostname == this.hostname) { 
      target = $(this.hash); 
      target = target.length ? target : $("[id=" + this.hash.slice(1) + "]"); 

      if (target.length) { 
       avail = $document.height() - $window.height(); 

       if (avail > 0) { 
        scroll = target.offset().top; 

        if (scroll > avail) { 
         scroll = avail; 
        } 
       } else { 
        scroll = 0; 
       } 

       deltaScroll = $window.scrollTop() - scroll; 

       // if we don't have to scroll because we're already at the right scrolling level, 
       if (!deltaScroll) { 
        return; // do nothing 
       } 

       e.preventDefault(); 

       if (transitionSupported) { 
        $("html").css({ 
         "margin-top": deltaScroll + "px", 
         "transition": scrollTime + "s ease-in-out" 
        }).data("transitioning", scroll); 
       } else { 
        $("html, body").stop(true, true) // stop potential other jQuery animation (assuming we're the only one doing it) 
        .animate({ 
         scrollTop: scroll + "px" 
        }, scrollTime * 1000); 

        return; 
       } 
      } 
     } 
    }); 

    if (transitionSupported) { 
     $("html").on("transitionend webkitTransitionEnd msTransitionEnd oTransitionEnd", function(e) { 
      var $this = $(this), 
       scroll = $this.data("transitioning"); 

      if (e.target === e.currentTarget && scroll) { 
       $this.removeAttr("style").removeData("transitioning"); 

       $("html, body").scrollTop(scroll); 
      } 
     }); 
    } 
}); 
</script> 
+0

Pouvez-vous s'il vous plaît nous dire votre cas d'utilisation? Normalement, le défilement est géré par CSS et le navigateur et vous n'avez pas besoin de javascript pour gérer les parchemins de liens. – Tapas

+0

passez en revue le code suivant! – Kamal

Répondre

0

J'espère que ce qui suit devrait vous aider, cela vous fera défiler au bas de la page.

$('html, body').scrollTop($(document).height());