Если переход по якорной ссылке приводит к тому, что нужный заголовок оказывается спрятан за фиксированным меню сверху страницы, причина в том, что браузер прокручивает страницу точно к позиции элемента, не учитывая высоту перекрывающего меню.
Почему так происходит
Стандартное поведение прокрутки к якорю ставит верхний край целевого элемента ровно на уровень верха видимой области — если поверх этой области есть фиксированный по позиции элемент (шапка сайта), он просто перекрывает часть только что прокрученного контента.
Решение через CSS
Добавьте свойство scroll-margin-top к целевым заголовкам со значением, равным высоте фиксированного меню — это заставляет браузер останавливать прокрутку с нужным отступом, оставляя заголовок видимым ниже меню.
Альтернатива через JavaScript
Если поддержка CSS-решения нежелательна, можно вручную корректировать позицию прокрутки после перехода по ссылке через обработчик события клика, вычитая высоту меню из целевой позиции.



