Я пытаюсь сделать навигацию с привязными связями фиксированной при прокрутке к якорю. Устранение пролома на якорь не проблема.Прокрутка к якорю и установка nav fixed
Проблема в том, что мой навигатор находится почти в нижней части экрана. Итак, что произойдет, если вы прокрутите вниз, навигация получит класс fixed
. При нажатии на ссылку привязки скрипт прокручивается далеко до блока привязки. Я попытался компенсировать навигацию до высоты навигации. Это работает, но только когда вы нажимаете второй раз по одной и той же ссылке. Первый щелчок по ссылке привязки все еще делает ссылку слишком далеко!
Я создал скрипку, чтобы объяснить, что происходит ->Fiddle
Я лично считаю, что scrollTo и делает нав фиксированной в то же время мешая друг другу.
Кто-нибудь знает, что может вызвать это?
Что у меня есть это:
<div class="anchor-links">
<div class="anchor-wrapper">
<ul class="nav-list">
<li><a href="#description" class="goSmoothly">Product information</a></li>
<li><a href="#bundles" class="goSmoothly">Product bundles</a></li>
<li><a href="#reviews" class="goSmoothly">Reviews</a></li>
<li><a href="#related" class="goSmoothly">Related products</a></li>
</ul>
</div>
</div>
<div id="description" class="block">description</div>
<div id="bundles" class="block">bundles</div>
<div id="reviews" class="block">reviews</div>
<div id="related" class="block">related</div>
var fixmeTop = $('.anchor-links').offset().top;
$(window).scroll(function() {
var currentScroll = $(window).scrollTop();
if (currentScroll >= fixmeTop){
$('.anchor-links').addClass("sticky");
} else {
$('.anchor-links').removeClass("sticky");
}
});
$('.goSmoothly').click(function(event){
event.preventDefault();
$(this).addClass('active');
$('html,body').animate({
scrollTop: $(this.hash).offset().top - 100
}, 500);
});
Одной из проблем может быть тот факт, что вы даете фиксированное положение якорям при прокрутке, а тело теряет эту высоту, поэтому математика будет отличаться от –