Загружаем изображение…

Смещение якорей через scroll-margin-top!



Когда на странице есть position: sticky фиксированная шапка, переход по якорю почти всегда ломается.

Контент прокручивается, но заголовок уезжает под хедер:
<a href="#section">Перейти</a><h2 id="section">Раздел</h2>

По умолчанию браузер скроллит элемент ровно к верху вьюпорта, не зная про фиксированную шапку.

Решение есть нативное и очень простое, добавить отступ для скролла самому элементу:
h2 {
scroll-margin-top: 72px;
}


Теперь при переходе по якорю браузер автоматически остановится ниже, с учётом высоты шапки.

Если высота шапки задана переменной, можно так:
:root {
--header-h: 72px;
}

h2 {
scroll-margin-top: var(--header-h);
}


Это работает для якорных ссылок, scrollIntoView(), навигации по оглавлению, документации и лонгридов.

Code Ready | #совет
Просмотры: 388
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти