这是相关页面的实时版本:http: //agoodman.com.au/index1.html
我正在使用 Bootstrap 构建一个单页网站,并且 scrollTo 用于向上/向下滚动不同的部分。有一个顶部导航栏,代码如下:
<ul class="nav">
<li class="active"><a href="#intro" onclick="$.scrollTo( '#intro', 600 );">Top</a></li>
<li><a href="#service" onclick="$.scrollTo( '#service', 600 );">What we do</a></li>
<li><a href="#howitworks" onclick="$.scrollTo( '#howitworks', 600 );">How it works</a></li>
<li><a href="#fees" onclick="$.scrollTo( '#fees', 600 );">Our fees</a></li>
<li><a href="#why" onclick="$.scrollTo( '#why', 600 );">Why do it?</a></li>
<li><a href="#map" onclick="$.scrollTo( '#map', 600 );">Map</a></li>
<li><a href="#contact" onclick="$.scrollTo( '#contact', 600 );">Contact</a></li>
</ul>
当您用鼠标单击导航栏时,滚动工作正常,根本没有奇怪的行为。然后,我使用此 jquery 代码通过键盘的向上/向下箭头控制导航栏:
$(document).keyup(function(e) {
var p = $("li.active");
if (e.keyCode === 38) {
p.prev().find("a").click();
} else if (e.keyCode === 40) {
p.next().find('a').click();
}
});
这在大多数情况下都有效。但是,我想解决两个问题:
1.当向上/向下按时,页面向上/向下移动一个小跳跃(就像在任何网站上按箭头键一样)然后滚动到下一个div。我试着把 event.preventDefualt(); 在 jquery if/else 语句中,但它没有做任何事情。关于如何在此处防止默认向上/向下操作的任何想法?
2.按“向上”键会使页面向上滚动两个部分而不是一个部分。例如,转到“#why”部分,然后按向上键。它滚动到“#fees”,然后再次滚动到“#howitworks”。也许 scrollspy.js 在这里发生冲突?
希望在这一点上指出正确的方向。
干杯