javascript - 使用键盘自动滚动 - 但仅适用于某些部分 - 使用 fullpage.js 时

标签 javascript jquery keyboard fullpage.js autoscroll

我正在使用 fullpage.js 的测试版(v 2.7.9),可以在 here 找到它,其中包含一个名为hybrid的新设置。当此设置设置为 true 时,默认情况下,用户可以通过触控板进行手势来自动滚动/跳转某个部分。但是,如果函数检测到某个部分具有类 fp-normal-scrolling,则函数设置 hybrid: true 将关闭自动滚动。因此,当存在此类并且混合为“true”时,滚动行为会变得缓慢且增量,在一个部分中移动,而不是在部分之间跳转。因此,通过这个新设置,您可以跳到下一部分或缓慢滚动浏览它,只需添加一个类 - 非常酷!

这是一个由 fullpage.js 作者编写的 jsfiddle,它演示了这种出色的混合行为。 http://jsfiddle.net/97tbk/1191/如果您在查看第一个部分时使用触控板滚动,它会跳转,但如果您在所有后续部分上使用触控板滚动,则滚动速度缓慢且增量(因为“fp-normal-scrolling”类已添加到每个他们)。

这是来自 jsfiddle 的相同 html:

<div id="fullpage">
    <div class="section">One</div>
    <div class="section fp-normal-scroll">
 class="section">One</div>
    <div class="slide">Two 2</div>
</div>
 <div class="section fp-normal-scroll">Three</div>
 <div class="section fp-normal-scroll">Four</div>
</div>

这是启用混合模式的 JavaScript: (您必须添加全页 js 和 css 文件才能使其工作)

$('#fullpage').fullpage({
    sectionsColor: ['yellow', 'orange', '#C0C0C0', '#ADD8E6'],
    hybrid:true,
    fitToSection: false
});

我的问题:我希望键盘上的向下箭头能够具有同样令人敬畏的混合/混合行为,但我不知道该怎么做。简单地说,在某些部分上,我希望向下箭头键导致部分跳转,而在其他部分上,我希望向下箭头键允许用户增量/缓慢地滚动各部分,而不跳过.但是,据我所知,这种混合行为尚不适用于键盘。我可以识别两个相关设置。

第一个是自动滚动。我可以关闭自动滚动,并且我可以在最后几页上进行增量滚动(这是可取的),但是如果关闭它,我就无法使用键盘跳转第一节到第二节。不好。 :(

我可以识别的另一个可能有用的设置是 setKeyboardScrolling。这似乎使用户可以使用键盘进行导航,也可以不使用键盘。

虽然我已经与开发人员进行了交流(您可以阅读我们的对话 here ),但我仍然无法找出允许我执行以下操作的设置组合:

  1. 始终打开键盘
  2. 让键盘在某些部分上产生部分跳转
  3. 让键盘在其他部分上产生缓慢/增量滚动。

Fullpage.js 可能还没有提供这个功能,但我很乐观。因为这种类型的混合行为已经包含在手势滚动的测试版中,所以具有足够 javascript/jquery 知识的人可能能够提出一个修复程序,允许向下箭头按键具有相同的混合功能。也许可以重写 fullpage.js 手势控制部分的代码以应用于键盘控件/向下箭头键?

我自己会尝试一下,但我对 javascript 不够熟练。 你们中有人能想出解决办法吗?我不在乎解决方案是否涉及一组 fullpage.js 设置或对 fullpage.js 的调整。我对任何解决方案都很满意。

谢谢!

更新:我收到了开发人员关于如何实现此目的的回复,但我不明白。有人可以告诉我他的意思吗?他是这样写的:

Just use a callback for it and set it off for any other section rather than the 1st one by using setKeyboardScrolling.

最佳答案

正如我所说,使用回调并使用您自己的逻辑调用fullpage.js方法setKeyboardScrolling,在这种情况下,仅当index == 1<时我们才会将其设置为true/。 (即,当我们在第一部分时)

$('#fullpage').fullpage({
    sectionsColor: ['yellow', 'orange', '#C0C0C0', '#ADD8E6'],
    hybrid:true,
    fitToSection: false,
    afterLoad: function(anchorLink, index){
        $.fn.fullpage.setKeyboardScrolling(index === 1);
    }
});

请注意,hybrid 选项未记录在案,这意味着它可能无法在所有可能的情况下按预期工作。

Working demo

关于javascript - 使用键盘自动滚动 - 但仅适用于某些部分 - 使用 fullpage.js 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610071/

相关文章:

html - 出现键盘时失去对文本区域的关注

javascript - 单击时计数未更新

javascript - 缺少获取循环值的步骤

javascript - 如何提交表单并在表单验证后重定向到页面

javascript - 以特定顺序调用的嵌套 AJAX 调用

cordova - ionic 2 键盘将标题推出 ios 屏幕

javascript - 获取元素的所有计算样式

javascript - jquery/javascript 函数在 firebug 控制台中工作,但在页面加载时不起作用

javascript - 根据邮政编码自动填充州和城市

php - 如何在电报机器人中发送空消息?