Активный пункт при прокрутке к якорю
Добрый день!
Подскажите, как правильно доработать функционал. У меня есть скрипт, который добавляет активный пункт к ссылке в меню, но я не знаю как сделать так, чтобы он активировался и при скролле мимо якоря. Скрипт
// добавляем активный пункт навигации
$(".vertical a").click(function() {
$(".active").removeClass("active");
$(this).addClass("active");
});
Меню
<div class="vnavbar">
<nav class="vertical">
<ul>
<li><a href="#download" class="dot"><span>Download</span></a></li>
<li><a href="#usage" class="dot"><span>Basic Usage</span></a></li>
<li><a href="#gen_css" class="dot"><span>Setting preview</span></a></li>
<li><a href="#css_gen" class="dot"><span>Min.css Gen</span></a></li>
<li><a href="#gen" class="dot"><span>Box-shadow Gen</span></a></li>
</ul>
</nav>
</div><!-- /vnavbar -->
|
Rise,
так есть же фиксированные бары. Только, как я понял, там контент делят на секции, где каждая секция = один экран. И при прокрутке активируется тот или иной пункт. В моем случае на экране может быть два пункта, но ведь расстояние между ними есть, пусть и не в 20, а в 4 небольших скролла колесиком. |
:write: при скролле, циклом проверять Math.abs(Element.getBoundingClientRect().top), у какого top меньше, ссылку на этот блок и "подсвечивать" , остальные ссылки "гасить".
|
Сделал так, но все равно что-то не работает. https://jsfiddle.net/zew5ra7f/2/
Хотя на другом примере работает. |
madeas,
:-? зачем тут parent?
if (lastId !== id) {
lastId = id;
menuItems
.parent().removeClass("active")
.end().filter("[href=#" + id + "]").parent().addClass("active");
}
попробуйте так
if (lastId !== id) {
lastId = id;
menuItems.removeClass("active").filter("[href='#" + id + "']").addClass("active")
}
|
рони,
тогда получается, что и это тоже не нужно? Ну или не обязательно.
$(".vertical a").click(function() {
$(".active").removeClass("active");
$(this).addClass("active");
});
|
Ну да, все правильно, получается дублирование. рони, спасибо.
|
Цитата:
|
Почему? Вот пример https://madeas.github.io/box-shadows все работает. Между 1 и 2 якорем промежуток только в виде кнопок, но активация происходит правильно. До первого якоря меню вовсе не активно.
|
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 03:55. |