【问题标题】:How to Use Arrow Keys to Navigate a Vertical Page如何使用箭头键导航垂直页面
【发布时间】:2013-01-28 02:15:22
【问题描述】:

我有一个网页,上面有照片。我希望观众能够使用箭头键(上、下、左、右)前进。通常向下键滚动大约 10 个像素。我想要向下键和向右键前进到下一张照片,或者说,1000 像素。我希望向上和向左键做同样的事情,但相反,所以向后滚动页面相同的 1000 像素。我想为每组照片分配一个锚 (#) 标签,然后让页面滚动到下一个标签。我几乎不知道 HTML、CSS、Javascript 和 Jquery,所以我需要耐心的回复来帮助我解决这个问题。

我正在使用的页面是my personal site,我想在我网站上的所有页面上应用这种相同类型的键盘导航。

【问题讨论】:

    标签: html scroll keyboard


    【解决方案1】:

    keydown 事件监听器附加到窗口,然后查看它是否是箭头键(keyCode 37 为左,38 为上,39 为右,40 为下)并调整document.body.scrollTop(和document.documentElement.scrollTop 为一些浏览器)相应地。

    例如:

    var handler = function(e) {
        e = e || window.event;
        var k = e.keyCode || e.which;
        switch(k) {
          case 37:
            document.body.scrollLeft -= 1000;
            document.documentElement.scrollLeft -= 1000;
            break;
          case 38:
            document.body.scrollTop-= 1000;
            document.documentElement.scrollTop-= 1000;
            break;
          case 39:
            document.body.scrollLeft += 1000;
            document.documentElement.scrollLeft += 1000;
            break;
          case 40:
            document.body.scrollLeft += 1000;
            document.documentElement.scrollLeft += 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);
    

    您可能还想添加 overflow:hidden 以防止通过其他方式(滚动条、鼠标滚轮)滚动,以确保滚动以适当的增量。

    【讨论】:

    • 非常感谢您的超快速响应。我到底把这段代码放在哪里?在外部 script.js 文件中还是直接与 HTML 和
    • 把脚本放在哪里都没有关系。
    • 好的,到目前为止脚本似乎运行良好。它正是我想要的。非常感谢。唯一的问题是现在我的平滑滚动 JQuery 脚本不再起作用。如果您单击 pavelrozman.com 顶部的链接,您将顺利滚动到页面上的下一个位置。方向键可以用同样的方式激活平滑滚动吗?
    • 嗯...我想你可以使用jQuery的$.scrollTo()函数,并传递"+=1000""-=1000"作为第一个参数,{axis:x}{axis:y}作为第二个参数。
    • 我不知道为什么,但是 jQuery 只能在 之前工作。我把它放在那里,它平滑地滚动,但当我使用箭头时不是。不过这没关系。非常感谢您的工作。
    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 2015-07-21
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多