键盘水平导航
KeyPress horizontal navigation
我正在尝试使用左/右箭头在我的网页上横向导航。
由于Firefox/Chrome处理默认箭头移动的方式不同,我不得不禁用默认移动(Firefox会向右移动20px)。
<script>
window.addEventListener("keydown", function(e) {
// space and arrow keys
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
</script>
然后我有一个Keydown函数,在按键上向左/向右移动1980像素。(我不能得到按键工作,因为阻止了默认移动)
<script>
$(window).keydown(function (e) {
var currentx = 0;
var viewport = 1920;
var btnright = (+currentx) + (+viewport);
var btnleft = (+currentx) - (-viewport);
if ( e.which == 37 ) {
window.scrollTo(btnleft, 0);
currentx = (+currentx) - (-viewport);
} else if ( e.which == 39 ) {
window.scrollTo(btnright, 0);
currentx = (+currentx) + (+viewport);
}
});
</script>
我希望它是循环的(页面是6000px宽),但我想一次移动一个面板(1980px)(每次移动后更新$Current)。最终,我可以通过箭头浏览整个页面。
我的问题是我不能让事件触发多次,我只能从0导航到1980。它不会再往前走了。有解决办法吗?
谢谢
如@CBroe所述,每次触发事件时,您的currentx
变量都被设置为0
。尝试将currentx
变量声明移出事件处理程序,如下所示:
<script>
var currentx = 0,
viewport = 1920;
$(window).keydown(function (e) {
var btnright = (+currentx) + (+viewport),
btnleft = (+currentx) - (-viewport);
if ( e.which == 37 ) {
window.scrollTo(btnleft, 0);
currentx = (+currentx) - (-viewport);
} else if ( e.which == 39 ) {
window.scrollTo(btnright, 0);
currentx = (+currentx) + (+viewport);
}
});
</script>
相关文章:
- Wordpress 3级水平导航-需要jquery/javascript帮助进行对齐
- 如何实现水平页面导航系统
- 使用jquery将垂直导航更改为水平导航
- 滑块水平缩略图导航器大小和图像数量
- 无法在WordPress主题中居中水平导航
- 具有垂直滚动条的水平滚动条页面导航
- 引导区悬停水平子导航
- 水平滚动jQuery固定导航
- 在winjs中的水平列表视图中进行左右导航
- CSS垂直导航菜单,带有水平子菜单和半透明带
- 水平滚动导航条不能正常工作
- 固定导航在ios移动时水平滚动
- 引导水平导航条与垂直下拉CSS
- 键盘水平导航
- 引导4:当导航条折叠时,li项水平显示在导航条品牌旁边
- 导航栏中的水平图标
- 鼠标悬停时水平展开导航条
- CSS切换导航水平以及垂直屏幕上调整大小
- 做一个响应式的Javascript水平导航,中间有Logo
- Jquery/JS和CSS水平列表导航单击下拉超链接不工作