Skip to content
Опубликовано: 2016-02-08
Теги: css

Решение проблемы с “якорем” прячущимся за “шапкой”

Я порой удивляюсь тому, чем я занимаюсь, о чем пишу. Это не профильная для меня тематика, но решил поделиться, т.к. проблема возникла уже не в первый раз, но в первый раз нашел для нее красивое решение.

Проблема: При оформлении веб-страницы с фиксированной “шапкой”, которая всегда(!) отображается в самом верху страницы и использовании ссылок-якорей получается так, что место, на которое ссылается “якорь”, прижимается к самому верху страницы и скрывается под “шапкой”. Описал путано, но надеюсь понятно.

Ранее подобные вещи решал с помощью JavaScript, это выглядит более качественно и надежно. Но вот сейчас столкнулся с тем, что на странице нет JS и подключать его только для этой цели нет смысла.

Решение на чистом CSS: Есть псевдо-элемент :target, который отвечает за оформление элемента, на который указывает “якорь”. И решение сводится к тому, чтобы переместить заголовок ниже “шапки” с помощью margin или padding. И на последок можно добавить анимации :-)

Надо всего лишь добавить подобный блок в свой файл стилей:

:target {
  margin-top: 90px!important;
  color: #F44336;
  background-color: rgba(255, 235, 59, 0.35);
  transition: margin 0.5s ease-out, color 2s ease, background-color 1s ease;
}