我已经四处寻找,但似乎找不到任何方法来实现这一点,所以请看这里。 我正在尝试调整滚动速度以偏离浏览器的默认速度。 因此,滚动速度将比通常情况下快/慢。
我尝试使用$(window).scrollLeft()
进行操作,但对我来说并不完全奏效。 有人知道在Javascript或jQuery中如何实现吗?
谢谢 :)
注意:我不是在寻找视差效果;)
我已经四处寻找,但似乎找不到任何方法来实现这一点,所以请看这里。 我正在尝试调整滚动速度以偏离浏览器的默认速度。 因此,滚动速度将比通常情况下快/慢。
我尝试使用$(window).scrollLeft()
进行操作,但对我来说并不完全奏效。 有人知道在Javascript或jQuery中如何实现吗?
谢谢 :)
注意:我不是在寻找视差效果;)
这是一个我编写的快速JavaScript类"AugmentScroll"。在你的window onload/document ready事件中实例化该类,它将改变滚动行为。它使用间隔计时器和窗口滚动事件。希望这能帮助你入门。它适用于最新的Chrome和FF以及IE9。在FF中,“平滑滚动”高级/常规选项会有点混乱。
window.onload = function() {
function AugmentScroll(type /* slowest|slower|slow|fast|faster|fastest */) {
this.oldX = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft || 0;
this.oldY = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop || 0;
this.deltaX = 0;
this.deltaY = 0;
this.busy = false;
this.multiplier = 0;
switch(type) {
case 'slowest': this.multiplier = -0.9; break;
case 'slower': this.multiplier = -0.5; break;
case 'slow': this.multiplier = -0.2; break;
case 'fast': this.multiplier = 0.2; break;
case 'faster': this.multiplier = 0.5; break;
case 'fastest': this.multiplier = 1.0; break;
case '2x': this.multiplier = 1.0; break;
case '3x': this.multiplier = 2.0; break;
case '4x': this.multiplier = 3.0; break;
case '5x': this.multiplier = 4.0; break;
default: break;
}
window.addEventListener("scroll", this.OnScroll.bind(this), false);
window.setInterval(this.OnUpdate.bind(this), 100);
};
AugmentScroll.prototype.OnScroll = function() {
if(this.busy) {
this.busy = false;
} else {
var x = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft || 0;
var y = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop || 0;
this.deltaX = x - this.oldX;
this.deltaY = y - this.oldY;
}
return true;
};
AugmentScroll.prototype.OnUpdate = function() {
var dx = this.deltaX * this.multiplier;
var dy = this.deltaY * this.multiplier;
if(dx != 0 || dy != 0) {
this.busy = true;
window.scrollBy(dx, dy);
this.oldX = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft || 0;
this.oldY = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop || 0;
this.busy = false;
}
};
new AugmentScroll('slowest');
};