Я создаю длинную страницу с навигацией с привязными ссылками. Когда вы прокрутите страницу вниз, соответствующая ссылка на навигаторе будет подсвечена, чтобы соответствовать разделу, в котором вы находитесь.Текущий раздел не правильно подсвечивается в навигаторе при прокрутке
Это нормально работает, однако у меня также есть раздел на странице, на которой нет якорной ссылки на nav. Проблема состоит в том, что, добавив этот раздел, он разрушает мой порядок раздела, который разрушает правильное выбранное состояние.
Вот код, чтобы показать вам пример. http://codepen.io/anon/pen/jEdKBp - Обратите внимание, что при прокрутке вниз до «нового раздела» ссылка «претензии» в навигаторе подсвечивается, что неверно!
Что мне нужно для того, чтобы подсвечивалась только текущая ссылка?
Вот мой код ...
HTML
<nav id="prod-menu">
<div class="wrapper">
<ul>
<li><a href="#features">Features</a></li>
<li><a href="#claims">Claims</a></li>
<li><a href="#guides">Guides</a></li>
<li><a href="#reviews">Reviews</a></li>
<li><a href="#faq">FAQs</a></li>
</ul>
</div>
</nav>
<section class="prod-hero"></section>
<div class="wrapper">
<section class="tile js-panel pad0">
<section id="features" class="prod-panels">
<h2>Features</h2>
</section>
<section class="prod-panels">
<h2>New section</h2>
<p>I do not want this section to appear in the nav</p>
</section>
<section id="claims" class="prod-panels">
<h2>Claims</h2>
</section>
<section id="guides" class="prod-panels">
<h2>Guides</h2>
</section>
<section id="reviews" class="prod-panels">
<h2>Reviews</h2>
</section>
<section id="faq" class="prod-panels">
<h2>FAQs</h2>
</section>
</section>
</div>
JQuery
var homeH = $(window).height(),
pH = [];
pH.push("0");
// create array with panel heights
for (var s=1; s<5; s++) {
var po = $(".js-panel section:nth-child("+s+")").position();
pH.push(Math.round(po.top));
};
$(window).scroll(function() {
// toggle top menu selection
for (var i=0;i<6;i++) {
if ($(window).scrollTop() > pH[i]+900) {
$("#prod-menu ul li").removeClass("sel");
$("#prod-menu ul li:nth-child("+(i+1)+")").addClass("sel");
}
};
});
Спасибо за это. Я проголосовал за это как лучший ответ, так как это был наименьший код, и вам также удалось снять подсветку с раздела, который не находится на борту. Я даже не спрашивал об этом, но думал об этом! – Adam
Это было веселое отвлечение. Мне было скучно прошлой ночью, и мне хотелось что-то сделать, спасибо за сообщение вопроса. – Daved