Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function currentYPosition() {
  2.     // Firefox, Chrome, Opera, Safari
  3.     if (self.pageYOffset) return self.pageYOffset;
  4.  
  5.     // Internet Explorer 6 - standards mode
  6.     if (document.documentElement && document.documentElement.scrollTop)
  7.         return document.documentElement.scrollTop;
  8.  
  9.     // Internet Explorer 6, 7 and 8
  10.     if (document.body.scrollTop) return document.body.scrollTop;
  11.     return 0;
  12. }
  13.  
  14. function elmYPosition(eID) {
  15.     var elm;
  16.     if(typeof eID != 'object' && typeof eID != 'array')
  17.         eID = [eID];
  18.     for(var i = 0; i < eID.length; i++) {
  19.         if(elm = document.getElementById(eID[i]))
  20.             break;
  21.     }
  22.     var y = elm.offsetTop;
  23.     var node = elm;
  24.     while (node.offsetParent && node.offsetParent != document.body) {
  25.         node = node.offsetParent;
  26.         y += node.offsetTop;
  27.     } return y;
  28. }
  29.  
  30. function smoothScroll(eID) {
  31.     var startY = currentYPosition();
  32.     var stopY = elmYPosition(eID);
  33.     var distance = stopY > startY ? stopY - startY : startY - stopY;
  34.     if (distance < 100) {
  35.         window.scrollTo(0, stopY); return;
  36.     }
  37.     var speed = Math.round(distance / 100);
  38.     if (speed >= 20) speed = 20;
  39.     var step = Math.round(distance / 25);
  40.     var leapY = stopY > startY ? startY + step : startY - step;
  41.     var timer = 0;
  42.     if (stopY > startY) {
  43.         for ( var i=startY; i<stopY; i+=step ) {
  44.             setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
  45.             leapY += step; if (leapY > stopY) leapY = stopY; timer++;
  46.         } return;
  47.     }
  48.     for ( var i=startY; i>stopY; i-=step ) {
  49.         setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
  50.         leapY -= step; if (leapY < stopY) leapY = stopY; timer++;
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement