У меня есть страница прокрутки с навигационной панелью, и я хочу, чтобы раздел, который прокручивается пользователем, будет выделен на панели навигации. На данный момент это почти выполняет это, но выделяет неверную ссылку.Подсветка текущего раздела в навигаторе
Демонстрация находится на http://codepen.io/meek/pen/NNprYb?editors=1000
код, который делает это следующим образом:
// highlight current tab
$(window).on("scroll", function() {
var currentPos = $(window).scrollTop();
$('.nav li a').each(function() {
var sectionLink = $(this);
var section = $(sectionLink.attr('href'));
if(section.position().top <= currentPos && sectionLink.offset().top + section.height() >= currentPos) {
$('.nav li').removeClass('active');
sectionLink.parent().addClass('active');
}
else {
sectionLink.parent().removeClass('active');
}
});
});
Я пытался несколько вещей, но не может заставить его надежно добавить активный класс к правильный сеанс. Помогите оценить!
Редакция:Редактирование: чтобы быть более четким, проблема заключается в том, что он выделяет только раздел, когда вы прокручиваете его немного, а не вверху справа, что означает, что, когда вы нажимаете на раздел, чтобы перейти к началу этого раздела автоматически, этот раздел не выделяется.
edit2: Так изменения, если заявление:
if(currentPos + $('#nav-wrapper').outerHeight() >= section.position().top && currentPos + $('#nav-wrapper').outerHeight() <= sectionLink.offset().top + section.outerHeight()) {
сделал улучшение, хотя и не полностью исправили проблему. В разделе «Дом», «О нас» и «Портфолио» все выделены правильные ссылки, но не контакты.
Большое спасибо за помощь и добрые слова, но почему-то раздел «контакт» по-прежнему не подсвечивается. Вы знаете, почему это может быть? – mlamp
А, измените селектор navHeight, чтобы выбрать идентификатор оболочки. Разница заключается в нескольких пикселях, вероятно, вызванных небольшим отступлением div. Редактировать в моем ответе! –
Чтобы быть точным, $ ('# navbar-wrapper') имеет высоту 70 пикселей, а $ ('. Navbar.navbar-default.navbar-static-top.affix') - 69 пикселей. Таким образом, разница в 1px не позволяла логике добавлять активное состояние к контактной ссылке. –