您尝试更新偏移量是正确的,因为这就是问题所在。基本上,第一部分的顶部永远不会从视口的顶部回来,因此它不会发射航路点。如果你将偏移设置为0,你会遇到同样的问题,除了航路点不会触发第三段。
这里有两种解决方案:;我想出了一些人工标记来对付。它们可能需要稍微修改以匹配您的特定标记;考虑到问题本身缺乏细节。
First Solution Fiddle
-此选项以所描述的方式维护标记。我把偏移量调到了1%,这似乎奏效了。
HTML格式
<header></header>
<nav class="navbar navbar-inverse navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<ul id="sub-nav" class="nav navbar-nav">
<li class="active"><a href="#uniqueid">Content</a></li>
<li><a href="#uniqueid2">Content2</a></li>
<li><a href="#uniqueid3">Content3</a></li>
</ul>
</div>
</nav>
<div class="shim" style="margin-top: 50px;"></div>
<section id="uniqueid" style="height: 600px; background-color: red;">Content</section>
<section id="uniqueid2" style="height: 600px; background-color: white;">Content 2</section>
<section id="uniqueid3" style="height: 600px; background-color: blue;">Content 3</section>
Java脚本
$('body section').waypoint(function () {
var id = $(this).attr('id');
var subTarget = $('#sub-nav li a[href=#' + id + ']');
$('.active').removeClass('active');
subTarget.parent('li').addClass('active');
}, { offset: '1%' });
Second Solution Fiddle
-此解决方案通过删除填充程序并在第一个容器的顶部添加边距来稍微修改标记。
HTML格式
<header></header>
<nav class="navbar navbar-inverse navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<ul id="sub-nav" class="nav navbar-nav">
<li class="active"><a href="#uniqueid">Content</a></li>
<li><a href="#uniqueid2">Content2</a></li>
<li><a href="#uniqueid3">Content3</a></li>
</ul>
</div>
</nav>
<section id="uniqueid" style="height: 1100px; background-color: red; margin-top: 51px;">Content</section>
<section id="uniqueid2" style="height: 1100px; background-color: white;">Content 2</section>
<section id="uniqueid3" style="height: 1100px; background-color: blue;">Content 3</section>
Java脚本
$('body section').waypoint(function () {
var id = $(this).attr('id');
var subTarget = $('#sub-nav li a[href=#' + id + ']');
$('.active').removeClass('active');
subTarget.parent('li').addClass('active');
}, { offset: 50 });