3

我正在将 jquery waypoints 插件用于一页滚动站点。有一个固定的顶部菜单。

<ul id="main_nav">
  <li><a href="#home">home</a></li>
  <li><a href="#about">about</a></li>
  <li><a href="#contact">contact</a></li>
</ul>

内容 div 是这样的:

<div id="content">
  <div id="home" class="page_content">Content here</div>
  <div id="about" class="page_content">Content here</div>
  <div id="contact" class="page_content">Content here</div>
</div>

我的滚动工作正常。但问题是航点。如果我单击一个链接,则会选择菜单(添加一个类 - 当前)。我正在使用航点来做同样的事情来滚动页面。向下滚动时,它工作正常。但不能完美地向上滚动。它需要再移一些顶部。然后它工作。如果我使用偏移量 -1%,那么它适用于向上滚动。但是向下滚动存在问题。这是我的js代码:

// CODE FOR SCROLLING
$('ul#main_nav a').bind('click',function(event){
    $('ul#main_nav a').removeClass("current");
    $(this).addClass("current");
    var $anchor = $(this);

    $('html, body').stop().animate({
        scrollTop: $($anchor.attr('href')).offset().top
    }, 1500,'easeInOutExpo');
    event.preventDefault();
});

// CODE FOR WAYPOINT
$('.page_content').waypoint({offset: '0%'});
$('.page_content').bind('waypoint.reached', function(event, direction) {
   var wayID = $(this).attr('id');
   $('.current').removeClass('current');
   $('#main_nav a[href=#'+wayID+']').addClass('current');       
});
4

4 回答 4

2

查看偏移选项

someElements.waypoint(function(event, direction) {
   if (direction === 'down') {
      // do this on the way down
   }
   else {
      // do this on the way back up through the waypoint
   offset: '50%'  // trigger at middle of page.

   }
});
于 2012-05-20T16:45:50.107 回答
1

我遇到了和你一样的问题。我通过两次调用航路点来解决它。

$(".page_content").waypoint(function(direction){ // no offset on the way down
   if(direction == 'down') {
       // do this on the way down
   }
}).waypoint(function(direction){ // has offset on the way up
   if(direction == 'up') {
       // do this on the way up
   }
}, {offset: -1});

我知道这不是一个好的答案。但它对我有用。

于 2014-05-08T08:08:17.243 回答
0

答案已经在你的代码中了。函数回调中的direction变量被传递一个“up”或“down”字符串。你有向下方向的代码,但你也应该为向上方向做一些事情。

if (direction === 'down') {
  // Your current code
}
else {
  // Code to select the previous section
}
于 2012-02-18T02:42:53.577 回答
0

这是一个例子:

$('.page_content').waypoint(  
    function(direction) {

        if (direction ==='down') {
            $(this).fadeTo(1000, 1);
        }
        else {
                $(this).fadeTo(1000, 0);        
        }

    }, { offset: '50%' });

这样做是为了使对象在向下滚动时变得可见并在向上滚动时消失。偏移量用于确定动画从哪里开始。默认偏移量为 0%,这意味着动画在对象的最顶部碰到浏览器顶部时开始

于 2014-03-27T22:00:21.617 回答