Задать вопрос
@Alexander9229

Как сделать переход к якорю, чтобы шапка не закрывала на чистом JS?

Нашел вот такой скрипт, для плавного перехода по якорным ссылкам, но не пойму, что можно здесь дописать, чтобы при скролле не мешала шапка?
Так как сама шапка фиксированная и при переходе может закрывать начало нужной секции

const menuLinks = document.querySelectorAll( '.menu__link' );

for ( let i = 0; i < menuLinks.length; i++ ) {
    menuLinks[i].addEventListener( 'click', function (event) {
        event.preventDefault();

        const blockId = event.target.getAttribute( 'href' ).substr(1);
        document.getElementById( blockId ).scrollIntoView( {
            behavior: 'smooth',
            block: 'start',
        } );
    } );
}
  • Вопрос задан
  • 220 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
@Alexander9229 Автор вопроса
Разобрался, кому интересно будет:

const menuLinks = document.querySelectorAll( '.menu__link' ),
        header = document.querySelector( '.header' );

    for ( let i = 0; i < menuLinks.length; i++ ) {
        menuLinks[i].addEventListener( 'click', function ( event ) {
            event.preventDefault();

            let href = this.getAttribute('href').substring(1);

        const scrollTarget = document.getElementById(href);

        const topOffset = document.querySelector('.header').offsetHeight;
        // const topOffset = 0; // если не нужен отступ сверху 
        const elementPosition = scrollTarget.getBoundingClientRect().top;
        const offsetPosition = elementPosition - topOffset;

        window.scrollBy({
            top: offsetPosition,
            behavior: 'smooth'
        });
        } );
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@n1ksON
мидл
Просто вычтите высоту шапки
Ответ написан
Ваш ответ на вопрос

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

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