Я пытаюсь обновить навигацию для одного веб-сайта, используя путевые точки jQuery.Одностраничное навигационное меню - активный индикатор
Я хочу обновить навигацию в зависимости от текущего раздела. Он отлично работает при движении по ссылкам навигации. Моя проблема заключается в том, когда вы пытаетесь перейти к разделу над текущим разделом, в котором активный якорь находится ниже, где он должен быть.
См. Мой Demo.
JQuery
$(document).ready(function(){
$('section').waypoint(function(direction) {
thisId = $(this).attr('id');
$('ul li').each(function(){
var secondaryID = $(this).attr('class');
if (secondaryID == thisId)
{
$('ul li').removeClass('active');
$(this).addClass('active');
}
});
},{offset: '0'});
});
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
|| location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 500);
return false;
}
}
});
HTML
<ul>
<li class="test"><a href="#test"></a></li>
<li class="test2"><a href="#test2"></a></li>
<li class="test3"><a href="#test3"></a></li>
<li class="test4"><a href="#test4"></a></li>
<li class="test5"><a href="#test5"></a></li>
</ul>
<section id="test"></section>
<section id="test2"></section>
<section id="test3"></section>
<section id="test4"></section>
<section id="test5"></section>
Update
я получил эту работу, используя две функции путевых точек с разными сдвигами, но это явно не самое лучшее решение.
Я пытался найти способ задания смещения внутри одной и той же функции (в зависимости от направления), я использовал переменную для смещения со значениями (1 & -1), но, к сожалению он использует только +1.
Спасибо, я думаю, что есть что-то здесь, но это не будет работать, как это. Проблема заключается в том, что путевые точки не срабатывают с помощью кнопок навигации. Он работает в направлении «вверх», если я, например, изменяю смещение на «-1». Но тогда это не сработает. – hyperdrive
Я получил его для работы, используя два вызова waypoint, но я не думаю, что это лучшее решение. – hyperdrive
Посмотрите на обновленный ответ, надейтесь, что он поможет вам – Dart