滚动捕捉但在页面上使用锚标记

时间:2015-06-29 14:12:09

标签: javascript jquery html fullpage.js

我尝试将滚动快照设置到位。我试图实现的目标可以在这里看到:http://alvarotrigo.com/fullPage。因此,当用户开始滚动时,会立即截取并滚动页面直到下一部分。

我无法使用此链接上提供的插件,因为他们使用带section类的div,但我无法编辑这种html元素。

我更喜欢在页面上的锚标签上使用id。因此,当用户开始向上/向下滚动时,我需要检测上一个/下一个锚点并滚动到它。

如上面的链接演示所示,当(鼠标)滚动开始(向上或向下)时,没有任何东西可以阻止它......直到它停止。然后再次发生滚动。

由于以下代码,我可以轻松地检测鼠标向上或向下滚动:

var lastScrollTop = 0;
$(window).scroll(function(event){
   var st = $(this).scrollTop();
   if (st > lastScrollTop){
       // downscroll code
       console.log('down');
   } else {
      // upscroll code
      console.log('up');
   }
   lastScrollTop = st;
});

我还可以检测滚动是否正在进行中:

$(window).scroll(function(event){
   clearTimeout($.data(this, 'scrollTimer'));
   $.data(this, 'scrollTimer', setTimeout(function() {
    // do something
    console.log("Haven't scrolled in 250ms!");
   }, 250));
});

现在我需要真的滚动到下一个/上一个锚点(感谢scrollTop

我的jsFiddle:http://jsfiddle.net/f38fmsw9/1/

打开控制台并在向上/向下/向上滚动时检查消息。

非常感谢你指出了正确的方向。

1 个答案:

答案 0 :(得分:0)

  

我无法使用此链接上提供的插件,因为它们使用div   使用section class但我无法编辑这种html元素。

为什么不使用fullpage.js选项sectionSelector来更改它并使用任何其他选择器?

$('#fullpage').fullpage({
    sectionSelector: '.mySelector'
});

然后在HTML

<div id="fullpage">
    <div class="mySelector">Section 1</div>
    <div class="mySelector">Section 2</div>
    <div class="mySelector">Section 3</div>
</div>

如果您没有所有部分的公共类,您甚至可以使用以下内容:

sectionSelector: '#fullpage>div'

将允许任何jQuery有效选择器。

  

我更喜欢在页面上的锚标签上使用id。所以当用户   开始向上/向下滚动我需要检测上一个/下一个锚点   滚动到它。

我想说使用id元素可能会非常困难,因为在您甚至可以控制动画之前,网站将滚动到给定的ID。 这是一个浏览器功能。