Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function currentYPosition() {
- // Firefox, Chrome, Opera, Safari
- if (self.pageYOffset) return self.pageYOffset;
- // Internet Explorer 6 - standards mode
- if (document.documentElement && document.documentElement.scrollTop)
- return document.documentElement.scrollTop;
- // Internet Explorer 6, 7 and 8
- if (document.body.scrollTop) return document.body.scrollTop;
- return 0;
- }
- function elmYPosition(eID) {
- var elm;
- if(typeof eID != 'object' && typeof eID != 'array')
- eID = [eID];
- for(var i = 0; i < eID.length; i++) {
- if(elm = document.getElementById(eID[i]))
- break;
- }
- var y = elm.offsetTop;
- var node = elm;
- while (node.offsetParent && node.offsetParent != document.body) {
- node = node.offsetParent;
- y += node.offsetTop;
- } return y;
- }
- function smoothScroll(eID) {
- var startY = currentYPosition();
- var stopY = elmYPosition(eID);
- var distance = stopY > startY ? stopY - startY : startY - stopY;
- if (distance < 100) {
- window.scrollTo(0, stopY); return;
- }
- var speed = Math.round(distance / 100);
- if (speed >= 20) speed = 20;
- var step = Math.round(distance / 25);
- var leapY = stopY > startY ? startY + step : startY - step;
- var timer = 0;
- if (stopY > startY) {
- for ( var i=startY; i<stopY; i+=step ) {
- setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
- leapY += step; if (leapY > stopY) leapY = stopY; timer++;
- } return;
- }
- for ( var i=startY; i>stopY; i-=step ) {
- setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
- leapY -= step; if (leapY < stopY) leapY = stopY; timer++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement