@boul

Как настроить меню (header) под задачи при скроле и адаптиве?

Решаю задачку:
1) При открытии страницы header выглядит как обычное горизонтальное меню. Но при скроле, это меню превращается в бургер меню.
2) При уменьшении ширины экрана меню превращается в бургер меню, но при этом лого не должно исчезать.
Вот текущий код:
HTML:
<header class="header">
  <div class="header_container _container">
    <a href="#"><img class="logo" src="img/logo.jpg"></a>
    <nav class="header_menu menu">
      <ul class="menu_list">
        <li class="menu-item"><a  href="#" class="menu_link">Home</a></li>
        <li class="menu-item"><a  href="#" class="menu_link">About us</a></li>
        <li class="menu-item"><a  href="#" class="menu_link">Blog</a></li>
        <li class="menu-item"><a  href="#" class="menu_link">Articles</a></li>
        <li class="menu-item"><a  href="#" class="menu_link">Contacts</a></li>
      </ul>
    </nav>
    <!-- бургер меню -->
    <div class="burger-menu">
      <input id="menu-toggle" type="checkbox" />
      <label class="menu-btn" for="menu-toggle">
        <span></span>
      </label>

      <ul class="menubox">
        <li><a class="menu-item" href="#">Home</a></li>
        <li><a class="menu-item" href="#">About us</a></li>
        <li><a class="menu-item" href="#">Blog</a></li>
        <li><a class="menu-item" href="#">Articles</a></li>
        <li><a class="menu-item" href="#">Contacts</a></li>
      </ul>
    </div>
  </div>
</header>

CSS:
.header {
  position: absolute;
  width: 100%;
  left: 0;
  right: 0;
  z-index: 50;
}

.header_container {
  display: flex;
  min-height: 104px;
  align-items: center;
}
.logo {
  width: 225px;
  margin-left: 14px;
}
.header_menu {
  margin: 0px 0px 0px 133px;
}
.menu {
}
.menu_list {
  flex-wrap: wrap;
  display: flex;
  position: relative;
  left: 30%;
}
.menu_item {

}
.menu-item:not(:last-child) {
  margin: 0px 21px 0px 0px;
}

.menu_link {
  color:#737373;
  font-weight: 600;
  line-height: calc(24 / 14 * 100%);

}

// Конец основного меню

// Меню БУРГЕР
  
  .menu-btn{
    display: flex;
    align-items: center;
    position: absolute;
    top: 0;
    right:0;
    width: 26px;
    height: 26px;
    cursor: pointer;
    z-index: 1;
  }
   
  .menu-btn > span,
  .menu-btn > span::before,
  .menu-btn > span::after {
    display: block;
    position: absolute;
    width: 100%;
    height: 2px;
    background-color: #616161;
    transition-duration: .25s;
  }
  .menu-btn > span::before {
    content: '';
    top: -8px;
  }
  .menu-btn > span::after {
    content: '';
    top: 8px;
  }

  .menubox{
    display: block;
    position: fixed;
    visibility: hidden;
    top: 0;
    left: -100%;
    width: 300px;
    height: 100%;
    margin: 0;
    padding: 80px 0;
    list-style: none;
    background-color: #ECEFF1;
    box-shadow: 1px 0px 6px rgba(0, 0, 0, .2);
    transition-duration: .25s;
  }

  .menu-item {
    display: block;
    padding: 12px 24px;
    color: #333;
    font-family: 'Roboto', sans-serif;
    font-size: 20px;
    font-weight: 600;
    text-decoration: none;
    transition-duration: .25s;
  }
  .menu-item:hover {
    background-color: #CFD8DC;
  }

  #menu-toggle{
    opacity: 0;
  }

  #menu-toggle:checked ~ .menu-btn > span{
    transform: rotate(45deg);
  }
  #menu-toggle:checked ~ .menu-btn > span::before{
    top: 0;
    transform: rotate(0);
  }
  #menu-toggle:checked ~ .menu-btn > span::after{
    top: 0;
    transform: rotate(90deg);
  }
  #menu-toggle:checked ~ .menubox{
    visibility: visible;
    left: 0;
  }


ссылка на codepen:
https://codepen.io/boulingist81/pen/yLoRJoe?editor...
  • Вопрос задан
  • 358 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы