Полноэкранное оверлейное меню

Здесь вы узнаете, как сделать полноэкранное оверлейное (overlay) меню навигации.


Нажмите на кнопку внизу, чтобы увидеть, как это работает:


Попробовать самому »

Как сделать полноэкранное оверлейное меню навигации

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

Пример


<!-- Оверлей -->
<div id="myNav" class="overlay">

  <!-- Кнопка, чтобы закрыть оверлей с меню -->
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>

  <!-- Содержимое оверлея -->
  <div class="overlay-content">
    <a href="#">О нас</a>
    <a href="#">Услуги</a>
    <a href="#">Клиенты</a>
    <a href="#">Контакты</a>
  </div>

</div>

<!-- Можно использовать любой элемент, чтобы открывать оверлейное меню -->
<span onclick="openNav()">открыть</span>

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

Пример


/* Оверлей (фон) */
.overlay {
  /* Высота и ширина зависит от того, как вы планируете выводить оверлей (см JS ниже) */   
  height: 100%;
  width: 0;
  position: fixed; /* Должен оставаться на месте */
  z-index: 1; /* Поверх всех элементов */
  left: 0;
  top: 0;
  background-color: rgb(0,0,0); /* Черный цвет для обратной совместимости */
  background-color: rgba(0,0,0, 0.9); /* Черный цвет с прозрачностью */
  overflow-x: hidden; /* Запретить горизонтальную прокрутку */
  transition: 0.5s; /* эффект перехода для плавного выезда из стороны или сверху (высота или ширина в зависимости от установок) */
}

/* Расположение содержимого внутри оверлея */
.overlay-content {
  position: relative;
  top: 25%; /* 25% от верха */
  width: 100%; /* 100% ширина */
  text-align: center; /* Текст/ссылки в центре */
  margin-top: 30px; /* 30px верхнего отступа, чтобы не было конфликтов с кнопкой закрытия на маленьких экранах */
}

/* Ссылки навигации внутри оверлея */
.overlay a {
  padding: 8px;
  text-decoration: none;
  font-size: 36px;
  color: #818181;
  display: block; /* Блоковое отображение вместо строчного */
  transition: 0.3s; /* Эффект плавного перехода при наведении (цвет) */
}

/* При наведении мыши на ссылки навигации, меняем их цвет */
.overlay a:hover, .overlay a:focus {
  color: #f1f1f1;
}

/* Расположение кнопки закрытия оверлея (верхний правый угол) */
.overlay .closebtn {
  position: absolute;
  top: 20px;
  right: 45px;
  font-size: 60px;
}

/* Когда высота экрана меньше 450px, изменяется размер шрифта ссылок и
расположение кнопки закрытия, чтобы они не перекрывались */
@media screen and (max-height: 450px) {
  .overlay a {font-size: 20px}
  .overlay .closebtn {
    font-size: 40px;
    top: 15px;
    right: 35px;
  }
}


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

В следующем примере при нажатии на кнопку активации оверлейное меню навигации выезжает слева направо (ширина меняется 0 до 100%):

Меню выезжает слева направо


/* Открываем меню, когда нажимают на элемент активации */
function openNav() {
  document.getElementById("myNav").style.width = "100%";
}

/* Закрываем меню, когда нажимают на символ "x" внутри оверлея */
function closeNav() {
  document.getElementById("myNav").style.width = "0%";
}

Попробовать самому »

В следующем примере при нажатии на кнопку активации оверлейное меню навигации выезжает сверху вниз (высота меняется 0 до 100%):

Обратите внимание, что для этого примера CSS стили немного другие: height: 0;, width: 100%;, overlay-y: hidden; (запрещает вертикальную прокрутку за исключением маленьких экранов).

Меню выезжает сверху вниз


/* Открыть */
function openNav() {
  document.getElementById("myNav").style.height = "100%";
}

/* Закрыть */
function closeNav() {
  document.getElementById("myNav").style.height = "0%";
}

Попробовать самому »

В следующем примере оверлейное меню навигации открывается без анимации:

Меню открывается без анимации


/* Открыть */
function openNav() {
  document.getElementById("myNav").style.display = "block";
}

/* Закрыть */
function closeNav() {
  document.getElementById("myNav").style.display = "none";
}

Попробовать самому »