我需要帮助指出我的javascript发生了什么。我有一些代码,当你在页面的那一部分时,应该让导航链接有一个活动的类,但它只是为一对夫妇链接工作,当你滚动而不是在整个时间保持活动时它也会闪烁你在页面的那一部分。以JSFiddle为例https://jsfiddle.net/7szpuqsr/ - 如果您慢速滚动,您可以看到“家”在一瞬间变得活跃。我试图让每个链接在您点击它时以及在页面的整个部分都有活动类。如何在使用javascript滚动时保持课程活动?
我也有一个JavaScript粘滞导航栏和平滑滚动工作,所以我不知道是否可能有任何阻碍的方式?预先感谢您的帮助。
这里的JavaScript的我想使用的活动类:
var sections = $('section')
, nav = $('nav')
, nav_height = nav.outerHeight();
$(window).on('scroll', function() {
var cur_pos = $(this).scrollTop();
sections.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').removeClass('active');
sections.removeClass('active');
$(this).addClass('active');
nav.find('a[href="#'+$(this).attr('id')+'"]').addClass('active');
}
});
});
nav.find('a').on('click', function() {
var $el = $(this)
, id = $el.attr('href');
$('html, body').animate({
scrollTop: $(id).offset().top - nav_height
}, 500);
return false;
});
那么你的代码删除并添加滚动的活动类,所以它要走了闪烁。你可以设置一个条件,如果活动班已经在那里,不要做任何事情 – Huangism
你能告诉我那是什么样子吗?我仍然在学习JavaScript。 – SShine2