为网站滚动添加效果
Add effects to website scroll
我正在使用箭头键滚动网站内容。我想添加滚动时间和滚动效果。
我知道有很多库使用jquery来实现这一点。我想要javascript的解决方案。请帮忙。
var handler = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
switch (k) {
case 38:
document.body.scrollTop -= 1000;
document.documentElement.scrollTop -= 1000;
break;
case 40:
document.body.scrollTop += 1000;
document.documentElement.scrollTop += 1000;
break;
default:
return true;
}
if (e.preventDefault) e.preventDefault();
return false;
};
if (window.attachEvent) window.addEvent("onkeydown", handler, false);
else window.addEventListener("keydown", handler, false);
div {
height: 1000px;
width: 100%;
}
.red {
background: red;
}
.green {
background: green;
}
.yellow {
background: yellow;
}
<div class="red"></div>
<div class="green"></div>
<div class="yellow"></div>
类似的东西?这不是最终产品,但肯定是最终产品。
此答案基于另一个答案
var handler = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
switch (k) {
case 38:
//document.body.scrollTop -= 1000;
//document.documentElement.scrollTop -= 1000;
scrollBy(document.body.scrollTop - 1000, 500);
break;
case 40:
//document.body.scrollTop += 1000;
//document.documentElement.scrollTop += 1000;
scrollBy(document.body.scrollTop + 1000, 500);
break;
default:
return true;
}
if (e.preventDefault) e.preventDefault();
return false;
};
if (window.attachEvent) window.addEvent("onkeydown", handler, false);
else window.addEventListener("keydown", handler, false);
function scrollBy(to, duration) {
if (duration <= 0) return;
var difference = to - document.body.scrollTop;
var perTick = difference / duration * 10;
setTimeout(function() {
document.body.scrollTop = document.body.scrollTop + perTick;
if (document.body.scrollTop == to) return;
scrollBy(to, duration - 10);
}, 10);
}
div {
height: 1000px;
width: 100%;
}
.red {
background: red;
}
.green {
background: green;
}
.yellow {
background: yellow;
}
<div class="red"></div>
<div class="green"></div>
<div class="yellow"></div>
http://jsbin.com/goqadek/edit?html,css,js
我已经尽力接近您的代码
https://jsfiddle.net/hp7po95j/
根据你的意愿篡改数字,使其更流畅
var handler = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
switch (k) {
case 38:
//document.body.scrollTop -= 1000;
//document.documentElement.scrollTop -= 1000;
animateScroll(true);
break;
case 40:
// document.body.scrollTop += 1000;
// document.documentElement.scrollTop += 1000;
animateScroll(false);
break;
default:
return true;
}
if (e.preventDefault) e.preventDefault();
return false;
};
if (window.attachEvent) window.addEvent("onkeydown", handler, false);
else window.addEventListener("keydown", handler, false);
function animateScroll(up){
var count = 1000;
function animate(){
if(up){
document.body.scrollTop-=100;
document.documentElement.scrollTop-=100;
}else{
document.body.scrollTop+=100;
document.documentElement.scrollTop+=100;
}
}
var interval = setInterval(function(){
if(count > 0){
animate();
count = count - 100;
}else{
clearInterval(interval);
}
},20);
}
相关文章:
- 在窗口中添加滚动条
- 向表单添加滚动功能
- 如何在html5,Android,Phonegap中添加滚动条
- 使用JavaScript向jQuery自动完成添加滚动条
- 在javascript中添加滚动条
- 如何在volusion网站中添加滚动到顶部的浮动按钮
- Fullpage.js.添加滚动延迟
- 如何为模式窗口中呈现的部分视图添加滚动条
- 如何添加滚动到引导框对话框
- 添加滚动条
- JQuery 添加“滚动”按钮,并在有新数据可用时刷新主页
- 如何向脚本窗口添加滚动速度
- 如何在每个窗帘在中间相遇后添加滚动延迟
- 如何通过JavaScript / css在弹出窗口中添加滚动条
- 使用jQuery.off或.unbind删除和添加滚动事件处理程序
- 为动态生成的选择选项添加滚动条
- 向幻灯片放映添加滚动显示样式
- 每当浏览器添加滚动条时,内容都会水平跳转
- 如何在android phonegap中启用/添加滚动条
- 如何在表格中添加滚动条