【发布时间】:2017-06-13 04:15:13
【问题描述】:
我需要帮助弄清楚我的 javascript 发生了什么。我有一些代码应该使导航链接在您位于页面的该部分时具有活动类,但它仅适用于几个链接,并且在您滚动时它也会闪烁而不是一直保持活动状态你在页面的那个部分。有关示例https://jsfiddle.net/7szpuqsr/,请参阅 JSFiddle ——如果您慢慢滚动,您可以看到“home”是如何变得活跃的。我试图让每个链接在您单击它时以及在您位于页面的整个部分时都具有活动类。
我还有一个 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;
});
【问题讨论】:
-
好吧,您的代码在滚动时删除并添加了活动类,因此它会闪烁。您可以设置一个条件,如果活动类已经存在,则不执行任何操作
-
你能告诉我那是什么样的吗?我还在学习 javascript。
标签: javascript jquery css