भी सादा जावास्क्रिप्ट का उपयोग कर अनुरोध एनीमेशन फ्रेम के साथ संभव ..
// first add raf shim
// http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
// main function
function scrollToY(scrollTargetY, speed, easing) {
// scrollTargetY: the target scrollY property of the window
// speed: time in pixels per second
// easing: easing equation to use
var scrollY = window.scrollY,
scrollTargetY = scrollTargetY || 0,
speed = speed || 2000,
easing = easing || 'easeOutSine',
currentTime = 0;
// min time .1, max time .8 seconds
var time = Math.max(.1, Math.min(Math.abs(scrollY - scrollTargetY)/speed, .8));
// easing equations from https://github.com/danro/easing-js/blob/master/easing.js
var PI_D2 = Math.PI/2,
easingEquations = {
easeOutSine: function (pos) {
return Math.sin(pos * (Math.PI/2));
},
easeInOutSine: function (pos) {
return (-0.5 * (Math.cos(Math.PI * pos) - 1));
},
easeInOutQuint: function (pos) {
if ((pos /= 0.5) < 1) {
return 0.5 * Math.pow(pos, 5);
}
return 0.5 * (Math.pow((pos - 2), 5) + 2);
}
};
// add animation loop
function tick() {
currentTime += 1/60;
var p = currentTime/time;
var t = easingEquations[easing](p);
if (p < 1) {
requestAnimFrame(tick);
window.scrollTo(0, scrollY + ((scrollTargetY - scrollY) * t));
} else {
console.log('scroll done');
window.scrollTo(0, scrollTargetY);
}
}
// call it once to get started
tick();
}
// scroll it!
scrollToY(0, 1500, 'easeInOutQuint');
** कभी ** एक स्ट्रिंग पारित करने के लिए 'setInterval()' या 'setTimeout()'। ऐसा करना 'eval()' का उपयोग करने जितना बुरा है और इसके परिणामस्वरूप आप चर के उपयोग के रूप में जल्द ही अपठनीय और संभावित रूप से असुरक्षित कोड में परिणाम प्राप्त करते हैं क्योंकि आपको वास्तविक चर पारित करने के बजाय उन्हें स्ट्रिंग में डालने की आवश्यकता होती है। उचित समाधान 'सेट इंटरवल (फ़ंक्शन() {/ * आपका कोड *)}, msecs) है; '। यह 'setTimeout() 'पर लागू होता है। यदि आप बिना किसी तर्क के एक समारोह को कॉल करना चाहते हैं, तो आप फ़ंक्शन नाम को सीधे पास भी कर सकते हैं: 'setInterval (someFunction, msecs);' (ध्यान दें कि फ़ंक्शन नाम के पीछे ** नहीं ** '()' है) – ThiefMaster
इसके लिए कुछ मौजूदा लाइब्रेरी का उपयोग करने पर विचार करें। – ThiefMaster
यह एक अच्छा अच्छा है, लेकिन पेज को कितना सेकंड स्क्रॉल करना चाहिए इसके बाद मैं समय कैसे जोड़ सकता हूं http://flesler.blogspot.se/2007/10/jqueryscrollto.html – Max