В этой статье создадим простое боковое меню с логотипом. Каждый элемент меню имеет свою иконку. При наведении элемент меню выделяется. Делать боковое меню будет на чистом CSS. Фиксированное боковое меню смотрится гармонично на любом сайте и удобно для пользователей.

Исходники для старта из Github

Все исходники для начала проекта вы сможете скачать по ссылке с моего Github. Там содержатся SVG-иконки, базовые настройки стилей, а также сброс стилей.

Разметка бокового меню

Первым делом сделаем разметку бокового меню в файле index.html. Разметка содержит в себе само меню (класс .menu), а также основной контент (класс .content).

<html>
  <body>
    <section class="menu">
      <!-- Логотип -->
      <a href="#" class="menu__logo logo">Drivefile</a>
      <!-- Основное меню -->
      <ul class="menu__list list">
        <!-- Элемент меню -->
        <li class="menu__item item">
          <!-- Ссылка меню -->
          <a href="#" class="menu__link link">
            <img src="./img/home.svg" alt="Home" />
            <span>Home</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/recents.svg" alt="Recents" />
            <span>Recents</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/starred.svg" alt="Starred" />
            <span>Starred</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/photos.svg" alt="Photos" />
            <span>Photos</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/shared.svg" alt="Shared" />
            <span>Shared</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/file.svg" alt="File" />
            <span>File</span>
          </a>
        </li>
        <li class="menu__item item">
          <a href="#" class="menu__link link">
            <img src="./img/delete.svg" alt="Delete" />
            <span>Delete</span>
          </a>
        </li>
      </ul>
      <ul class="menu__admin admin">
        <li class="admin__item item">
          <a href="" class="admin__link link">
            <img src="./img/get.svg" alt="Get help" />
            <span>Get help</span>
          </a>
        </li>
        <li class="admin__item item">
          <a href="" class="admin__link link">
            <img src="./img/logout.svg" alt="Logout" />
            <span>Logout</span>
          </a>
        </li>
      </ul>
    </section>
    <section class="content">
      <!-- Заполнить любым текстом -->
    </section>
  </body>
</html>

Стили бокового меню

Важно сделать само меню фиксированным, а также растянуть его на всю высоту экрана.

body {
  width: 100%;
  min-height: 100vh;
  background-color: #f5f6fb;
}

/* Основные свойства для бокового меню */
.menu {
  display: flex;
  flex-direction: column; /* размещаем элементы к колонку */
  width: 240px;
  min-height: 100vh; /* на всю высоту экрана */
  position: fixed; /* чтобы меню было фиксированным */
  top: 0; /* прижимаем к верхнему */
  left: 0; /* .. и нижнему краю */
  background-color: #343951;
  box-shadow: 4px 4px 8px 0 rgba(34, 60, 80, 0.2); /* задаем тень, чтобы отделить от фона */
}

/* Свойства для контента */
.content {
  padding-left: 280px; /* отступ от бокового меню 240px + 40px */
  padding-top: 40px;
  padding-right: 40px;
  padding-bottom: 40px;
}

.logo {
  display: flex;
  align-items: center; /* центрируем логотип с текстом */
  color: #fff;
  font-size: 24px;
  text-decoration: none;
  font-family: "Rubik", sans-serif;
  font-weight: bold;
}

/* Задаем псеводоэлемент для иконки */
.logo:before {
  content: url(./img/logo.svg); /* путь от иконки-лого */
  padding-right: 8px; /* немного отступим справа */
}

/* Позиционирование лого в меню */
.menu__logo {
  padding-top: 50px;
  padding-left: 30px;
  margin-bottom: 59px;
}

/* Позиционирование элементов в меню */
.menu__link,
.admin__link {
  padding-left: 30px;
}

/* Свойства для элементов меню */
.link {
  position: relative; /* чтобы задать потом псевдоэлемент */
  display: flex; /* чтобы элемент тянулся на всю ширину */
  align-items: center; /* по центру текст и иконка */
  height: 45px; /* высота элемента 45px */
  text-decoration: none;
}

/* Свойства иконки внутри ссылки */
.link > img {
  width: 25px;
  margin-right: 20px;
}

/* Свойства текста внутри ссылки */
.link > span {
  font-family: "Karla", sans-serif;
  font-size: 20px;
  color: #fff;
}

/* При наведении на ссылку - полупрозрачный белый фон */
.link:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

/* Выводим оранжевую линию слева */
.link:hover:before {
  display: flex;
}

/* Создаем оранжевую линию слева */
.link:before {
  content: "";
  display: none;
  position: absolute;
  left: 0;
  top: 0;
  width: 5px;
  height: 100%;
  background-color: #ffa000;
}

/* Позиционирование админ-меню */
.menu__admin {
  margin-top: auto;
  padding-bottom: 40px;
}

 

 

 


Warning: Undefined variable $aff_bottom_mark in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 81

Warning: Undefined variable $aff_bottom_info in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 85