Как создать выпадающее меню навигации с помощью CSS

Интересное и привлекательное меню навигации имеет значительную роль для каждой веб-страницы. Такие меню важны для легкого доступа к вашей странице. Кроме этого, пользователям нравятся хорошо спроектированные веб-страницы.

В этой статье мы расскажем, как создать выпадающее меню навигации. А сейчас пошагово покажем, как создать интересное навигационное меню.

Есть три способа создания выпадающего меню с помощью Flash, JavaScript и CSS/HTML.

Мы покажем меню на основе CSS/HTML, так как оно имеет некоторые преимущества. Это самый легкий способ, а также имеет небольшой размер приложения.

Использование CSS/HTML - самый лучший метод, чтобы избежать конфликтов при JavaScript. Помимо этого, меню на основе CSS/HTML могут быть использованы многими.

1. Создайте HTML.

Как всегда мы начинаем с создания HTML.

  • Создайте элемент <div> с id. Создайте тег <ul> внутри элемента <div> с классом "navbar". Тег <ul> используется для указания неупорядоченного списка, который содержит элементы без порядковых номеров. Каждый элемент неупорядоченного списка описывается внутри тега <li>.
  • Внутри тега <li> добавьте контент, который хотите показать в меню.
<div id="wrap">
<ul class="navbar">
  <li>
    <a href="#">Главная страница</a>
  </li>
  <li>
    <a href="#">Учебники</a>
    <ul>
      <li><a href="#">Изучите HTML</a></li>
      <li><a href="#">Изучите CSS</a></li>
      <li><a href="#">Изучите JavaScript</a></li>
      <li><a href="#">Изучите PHP</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Тесты</a>
    <ul>
      <li><a href="#" >Основы CSS</a></li>
      <li><a href="#">Основы PHP</a></li>
      <li><a href="#">Основы JavaScript</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Инструменты</a>
    <ul>
      <li><a href="#">Геометрические изображения</a></li>
      <li><a href="#">Color Picker</a></li>
      <li><a href="#">Генератор паролей</a></li>
      <li><a href="#">HTML редактор</a></li>
      <li><a href="#">Base 64</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Сниппеты</a>
    <ul>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">Angular</a></li>
      <li><a href="#">Java</a></li>
    </ul>
  </li>
  <li>
    <a href="#">String Functions</a>
    <ul>
      <li><a href="#">Реверс строки</a></li>
      <li><a href="#">URL кодер</a></li>
      <li><a href="#">Удаление пустых строк</a></li>
      <li><a href="#">Подсчет слов в строке</a></li>
    </ul>
  </li>
</ul>

Первая часть готова. А теперь продолжим и создадим красивое навигационное меню.

2. Добавьте CSS.

Теперь, когда у нас есть половина кода, можем добавить к нему стиль. С помощью CSS свойств создадим выпадающее меню.

  • Установите для меню ширину и высоту с помощью свойств width и height.
  • Установите z-index, чтобы убедиться, что навигационное меню будет находится поверх остальных элементов.
  • Установите также цвет для всего меню с помощью свойства color. Можете выбрать цвет из нашего инструмента Color Picker.
#wrap{
width: 100%; 
height: 50px; 
margin: 0;
z-index: 99; 
position: relative; 
background-color: #444444;
}
  • Установите свойство position в значение "absolute", чтобы навигационное меню не смещало остальные элементы вниз.
.navbar{
height: 50px;
padding: 0;
margin: 0;
position: absolute; 
}
  • Расположите элементы меню по горизонтали сверху от страницы с помощью свойства float со значением "left".
.navbar li {
height: auto;
width: 135.8px; 
float: left;  
text-align: center; 
list-style: none;  
font: normal bold 13px/1em Arial, Verdana, Helvetica;  
padding: 0;
margin: 0;
background-color: #444444;
}
  • Добавьте стиль к остальным тегам привязки.
.navbar a{							
padding: 18px 0;  
border-left: 1px solid #ccc9c9;
text-decoration: none; 
color: white; 
display: block;
}
  • Добавьте стиль для фона меню, чтобы изменить цвет при наведении курсора мыши.
.navbar li:hover, a:hover {
background-color: #444444;
}
  • Добавьте стиль, чтобы скрыть выпадающее меню и еще один стиль для его отображения при наведении курсора мыши на элемент главного меню.
.navbar li ul{
display: none;
height: auto;									
margin: 0; 
padding: 0; 
}

.navbar li:hover ul{
display: block;
}
  • Добавьте стиль к выпадающему меню.
.navbar li ul li{
background-color: #444444;
}
  • Измените границы для создания эффекта главного меню.
.navbar li ul li a{
border-left: 1px solid #444444; 
border-right: 1px solid #444444; 
border-top: 1px solid #c9d4d8; 
border-bottom: 1px solid #444444; 
}

.navbar li ul li a:hover{
background-color: #a3a1a1;
}

А сейчас увидим, каким получилось выпадающее меню:

Пример

<!DOCTYPE html>
<html>
  <head>
    <style>
      #wrap{
      width: 100%; 
      height: 50px; 
      margin: 0;
      z-index: 99; 
      position: relative; 
      background-color: #444444;
      }
      .navbar{
      height: 50px;
      padding: 0;
      margin: 0;
      position: absolute; 
      }
      .navbar li{
      height: auto;
      width: 135.8px; 
      float: left;  
      text-align: center; 
      list-style: none;  
      font: normal bold 13px/1em Arial, Verdana, Helvetica;  
      padding: 0;
      margin: 0;
      background-color: #444444;
      }
      .navbar a{							
      padding: 18px 0;  
      border-left: 1px solid #ccc9c9;
      text-decoration: none; 
      color: white; 
      display: block;
      }
      .navbar li:hover, a:hover {
      background-color: #444444;
      } 
      .navbar li ul{
      display: none;
      height: auto;									
      margin: 0; 
      padding: 0; 
      }				
      .navbar li:hover ul{
      display: block;
      }
      .navbar li ul li {
      background-color: #444444;
      } 
      .navbar li ul li a{
      border-left: 1px solid #444444; 
      border-right: 1px solid #444444; 
      border-top: 1px solid #c9d4d8; 
      border-bottom: 1px solid #444444; 
      }
      .navbar li ul li a:hover{
      background-color: #a3a1a1;
      }
    </style>
  </head>
  <body>
    <h2>Создайте модальное окно</h2>
    <div id="wrap">
      <ul class="navbar">
        <li>
          <a href="#">Главная страница</a>
        </li>
        <li>
          <a href="#">Учебники</a>
          <ul>
            <li><a href="#">Изучите HTML</a></li>
            <li><a href="#">Изучите CSS</a></li>
            <li><a href="#">Изучите JavaScript</a></li>
            <li>
              <a href="#">Изучите PHP</a>
            </li>
          </ul>
        </li>
        <li>
          <a href="#">Тесты</a>
          <ul>
            <li><a href="#" >Основы CSS</a></li>
            <li><a href="#">Основы PHP</a></li>
            <li><a href="#">Основы JavaScript</a></li>
          </ul>
        </li>
        <li>
          <a href="#">Инструменты</a>
          <ul>
            <li><a href="#">Геометрические изображения</a></li>
            <li><a href="#">Color Picker</a></li>
            <li><a href="#">Генератор паролей</a></li>
            <li><a href="#">HTML редактор</a></li>
            <li>
              <a href="#">Base 64</a>
            </li>
          </ul>
        </li>
        <li>
          <a href="#">Сниппеты</a>
          <ul>
            <li><a href="#">CSS</a></li>
            <li><a href="#">JavaScript</a></li>
            <li><a href="#">Angular</a></li>
            <li>
              <a href="#">Java</a>
            </li>
          </ul>
        </li>
        <li>
          <a href="#">String Functions</a>
          <ul>
            <li><a href="#">Реверс строки</a></li>
            <li><a href="#">URL кодер</a></li>
            <li><a href="#">Удаление пустых строк</a></li>
            <li><a href="#">Подсчет слов в строке</a></li>
          </ul>
        </li>
      </ul>
    </div>
  </body>
</html>

Рассмотрим другой пример выпадающего меню навигации:

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      *{
      margin: 0;
      padding: 0;
      list-style-type: none;
      box-sizing: border-box;
      }
      body{
      background: url('https://images.unsplash.com/photo-1532210317995-cc56d90177d9?ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80') center;
      background-size: cover;
      min-height: 600px;
      font-family: 'Helvetica Neue', sans-serif;
      }
      nav{
      text-align: center;
      }
      .menu{
      display: inline-block;
      }
      .menu > li{
      float: left;
      color: #e298e1;
      width: 140px;
      height: 40px;
      line-height: 40px;
      background: rgba(0,0,0, 0.7);
      cursor: pointer;
      font-size: 17px;
      }
      .sub-menu{
      transform: scale(0);
      transform-origin: top center;
      transition: all 300ms ease-in-out;
      }
      .sub-menu li{
      font-size: 14px;
      background: rgba(0,0,0, 0.8);
      padding: 8px 0;
      color: white;
      border-bottom: 1px solid rgba(255,255,255, 0.2);
      transform: scale(0);
      transform-origin: top center;
      transition: all 300ms ease-in-out;
      }
      .sub-menu li:last-child{
      border-bottom: 0;
      }
      .sub-menu li:hover{
      background: black;
      }
      .menu > li:hover .sub-menu li{
      transform: scale(1);
      }
      .menu > li:hover .sub-menu{
      transform: scale(1);
      }
    </style>
  </head>
  <body>
    <nav>
      <ul class="menu">
        <li>
          Италия
          <ul class="sub-menu">
            <li>Рим</li>
            <li>Милан</li>
            <li>Венеция</li>
            <li>Лацио</li>
            <li>Флоренция</li>
          </ul>
        </li>
        <li>
          Франция
          <ul class="sub-menu">
            <li>Париж</li>
            <li>Бурдо</li>
            <li>Марсель</li>
            <li>Тулуза</li>
          </ul>
        </li>
        <li>
          Испания
          <ul class="sub-menu">
            <li>Мадрид</li>
            <li>Валенсия</li>
            <li>Барселона</li>
            <li>Севилья</li>
            <li>Бильбао</li>
          </ul>
        </li>
        <li>
          Россия
          <ul class="sub-menu">
            <li>Москва</li>
            <li>Санкт-Петербург</li>
            <li>Тула</li>
            <li>Чехов</li>
          </ul>
        </li>
        <li>
          Германия
          <ul class="sub-menu">
            <li>Берлин</li>
            <li>Мюнхен</li>
            <li>Франкфурт</li>
            <li>Гамбург</li>
            <li>Дрезден</li>
          </ul>
        </li>
      </ul>
    </nav>
  </body>
</html>