使用键(不是鼠标)反向滚动

Posted

技术标签:

【中文标题】使用键(不是鼠标)反向滚动【英文标题】:Reverse scrolling with keys (not mouse) 【发布时间】:2018-08-04 08:53:57 【问题描述】:

我想在 3D 世界导航的同时制作一个渐进式滚动页面。然后我必须按 UP 键同时向下滚动。我不知道如何使用键盘命令配置我的页面以使用 UP 键向下滚动并使用 DOWN 键向上滚动。我想我可以在纯 JS 中做到这一点,但我尝试在 Jquery 中开始:jsfiddle

我试过类似的东西:

$(document).ready(function () 
setInterval(function () 
    var iScroll = $(window).scrollTop();
    iScroll = iScroll + 1000;

    $("#search").keyup(function(e) 
        if (e.keyCode == 40) 
          $('html, body').animate(
            scrollTop: iScroll
          , 1000);
        
        if(e.keyCode == 38) 
          $('html, body').animate(
            scrollTop: iScroll
          , 1000);
        
    );
, 2000);
);

【问题讨论】:

【参考方案1】:

第一个问题是您正在侦听 ID 为 #search 的元素上的 keyup 事件,在窗口上侦听更为常见,因为它可以让您在全局范围内(页面上的任何位置)捕获事件。 setInterval 也是不必要的,您可以在实际滚动之前将其删除并更新 iScroll。

$(document).ready(function () 
  var iScroll = $(window).scrollTop();

  $(window).keydown(function(e) 
    e.preventDefault()
    if (e.keyCode == 40) 
      // Scroll to the current scroll position - 1000
      iScroll = -1000;
    
    if(e.keyCode == 38) 
      // Scroll to the current scroll position + 1000
      iScroll = 1000;
    
  );

  // Check where to scroll to
  setInterval(function()
    $('html, body').animate(
      scrollTop: $(window).scrollTop() + iScroll
    , 1000);
    // Reset iScroll so that we don't keep scrolling automatically
    iScroll = 0;
  , 1100)
);

https://jsfiddle.net/wgm1gtx6/

【讨论】:

哇,太快了,谢谢!我现在会尽量让它更顺畅。 问题是我不能一直按下键和命令重复,我有没有办法让它连续? @FlorianFromager 查看已编辑的答案,猜猜这就是您要查找的内容 谢谢马蒂亚斯

以上是关于使用键(不是鼠标)反向滚动的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap modal 使用鼠标滚动/触摸板在 Chrome 41 上停止滚动(但适用于向上/向下键)

“鼠标中键滚轮向上滚动”这个用英语怎么说?

让鼠标滚轮在WINDOWS系统中也和MAC一样滚动(WIN系统鼠标滚轮反向)

wpf 中scrollviewer 中放置个LISTBOX,当焦点在LISTBOX时候,滚动鼠标不响应Scrollviewer的鼠标滚动

JS怎么禁止鼠标滚轮的单击 IE下! 注意是滚轮去单击 而不是滚动!

word滚动鼠标滑轮会放大缩小怎么办