Я работаю над прокручиваемой страницей портфолио для Free Code Camp и пытаюсь добавить подсветку навигации. Под этим я подразумеваю, что хотел бы сделать так, чтобы после прокрутки вверху раздела (т. е. от раздела «домой» к разделу «о») навигационная ссылка, соответствующая этому разделу, должна была выделиться. Эту часть я на самом деле понял по большей части. Однако есть ошибка, которую я не могу понять. Переход от раздела «Портфолио» к разделу «Контакты» выделяется в навигации, прежде чем я перехожу к фактическому разделу. Может ли кто-нибудь из вас понять, почему это так?
У меня есть ощущение, что это как-то связано с тем, что я использую функцию .innerHeight в javascript, но я не уверен.
Вот соответствующий javascript, и внизу у меня будет ссылка на codepen.
$(document).ready(function() {
var navHeight = $('nav').innerHeight();
var componentEnd = [];
$('.component').each(function(){
componentEnd.push($(this).offset().top + $(this).innerHeight() - navHeight);
});
$(document).on('scroll', function() {
var pos = $(document).scrollTop();
for (var i = 0; i < componentEnd.length; i++) {
if (pos <= componentEnd[i] ) {
var index = i;
break;
}
}
$('.navbar-nav li')
.removeClass('nav-active')
.eq(index)
.addClass('nav-active');
});
});
Если у кого-то из вас есть мысли, буду очень признателен! Я работаю над этим некоторое время.