prrrrrrr
@prrrrrrr
Верстаю сразу на PHP.

Как сделать отступ при прокрутке к якорю?

Подскажите, есть JS код который подсвечивает ссылки в навигации при активной секции, а также стоит плавная прокрутка к якорю, работает всё нормально, вот только когда кликаем на ссылку, то прокрутка происходит в точности к привязанной секции, но вот момент, фиксированное меню налазит на заголовок. Как можно исправить ситуацию, чтобы меню не налазило, то есть отправлять чуть выше?

Код
var menu_selector = ".landing-menu";
 
function onScroll(){
    var scroll_top = $(document).scrollTop();
    $(menu_selector + " a").each(function(){
        var hash = $(this).attr("href");
        var target = $(hash);
        if (target.position().top <= scroll_top && target.position().top + target.outerHeight() > scroll_top) {
            $(menu_selector + " a.active").removeClass("active");
            $(this).addClass("active");
        } else {
            $(this).removeClass("active");
        }
    });
}
 
$(document).ready(function () {
 
    $(document).on("scroll", onScroll);
 
    $("a[href^=#]").click(function(e){
        e.preventDefault();
 
        $(document).off("scroll");
        $(menu_selector + " a.active").removeClass("active");
        $(this).addClass("active");
        var hash = $(this).attr("href");
        var target = $(hash);
 
        $("html, body").animate({
            scrollTop: target.offset().top
        }, 900, function(){
            $(document).on("scroll", onScroll);
        });
 
    });
 
});

  • Вопрос задан
  • 1137 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
$("html, body").animate({
  scrollTop: target.offset().top - 150 // или на сколько пикселей выше надо
}, 900, function(){
  $(document).on("scroll", onScroll);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Galdar
Web, JS, PHP, NGINX, Linux
var paddingtop = 200;// отступ сверху при прокрутке

  $('body').delegate('#spgo', 'click', function(){
    $('body,html').animate({scrollTop: $('span.highlight:first').offset().top-paddingtop}, scrollspeed); 
  });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы