Прилипающая шапка

 alexei 08/09/2021 - 07:44

Узнайте, как создать зафиксированную/прилипающую при прокручивании шапку сайта при помощи CSS и JavaScript.



Как сделать прилипающую при прокручивании шапку сайта

Шаг 1) Добавляем HTML:


<div class="header" id="myHeader">
  <h2>Моя шапка</h2>
</div>

Шаг 2) Добавляем CSS:


/* Стили шапки */
.header {
  padding: 10px 16px;
  background: #555;
  color: #f1f1f1;
}

/* Контент страницы */
.content {
  padding: 16px;
}

/* Класс sticky добавляется к шапке при помощи JS,
  когда страница прокручивается до нужной позиции */
.sticky {
  position: fixed;
  top: 0;
  width: 100%
}

/* Добавляем к контенту страницы верхние отступы,
  чтобы предотвратить неожиданные рывки (из-за того,
  что у шапки задается новая позиция вверху страницы
  (position:fixed и top:0) */
.sticky + .content {
  padding-top: 102px;
}

Шаг 3) Добавляем JavaScript:


// Когда пользователь прокручивает страницу, выполняем myFunction
window.onscroll = function() {myFunction()};

// Получаем шапку
var header = document.getElementById("myHeader");

// Получаем позицию элемента
var sticky = header.offsetTop;

// Добавляем класс sticky, когда шапка достигнет нужной позиции.
// Удаляем класс sticky, когда шапка уйдет с этой позиции.
function myFunction() {
  if (window.pageYOffset > sticky) {
    header.classList.add("sticky");
  } else {
    header.classList.remove("sticky");
  }
}