我在我的网站上使用两个jQuery插件来完成两件事:
jQuery Waypoints - 当我向下滚动页面并进入每个部分时,相应菜单链接下方的黑条变为白色:
我的问题是,当我手动向下滚动页面时,相应的选定类会被添加到主菜单链接(如上所示将白条下方的条形图转换为Waypoint)。但是,当我单击主菜单上的实际链接时,直到我手动向下滚动一下它才会起作用。两个脚本都有一些偏移选项,我相信它可以使它正常工作,但我无法弄明白。我设置了一个jsFiddle(http://jsfiddle.net/j5Guz/)。这是我目前的jquery:
$(function() {
var sections = $('section');
var navigation_links = $('nav a');
sections.waypoint({
handler: function(event, direction) {
var active_section;
active_section = $(this);
if (direction === "up") active_section = active_section.prev();
var active_link = $('nav a[href="#' + active_section.attr("id") + '"]');
navigation_links.removeClass("selected");
active_link.addClass("selected");
},
offset: '35%'
});
navigation_links.click( function(event) {
$.scrollTo(
$(this).attr("href"),
{
duration: 500,
offset: { 'left':0, 'top':-0.15*$(window).height() }
}
);
});
});
答案 0 :(得分:0)
jsFiddle似乎没有完全正常工作(当向下滚动时导航栏不会保持在视图中)但是我遇到了这个完全相同的问题,其中导航栏转换使用手动滚动,但是当点击时,不要相当不错的位置。
我的解决方案是使用Firebug检查导航栏元素,然后查看Layout
选项卡,该选项卡将显示导航栏的确切总像素高度,包括填充和边距。然后,您可以将offset
设置为与总像素高度相匹配。例如如果导航栏高度为85像素,那么在我的设置中,
<body id="the-page" data-target=".navbar" data-offset="85" data-spy="scroll">
此处,data-offset
一旦正确,点击导航栏链接就会到达页面上的正确位置,并更改导航栏中突出显示的部分。