Адаптивная и динамическая навигация играет важную роль в веб-разработке, особенно для мобильных устройств. Пользователи ожидают, что навигация на сайтах будет удобной и интуитивно понятной независимо от используемого устройства. В этой статье мы узнаем, как создать адаптивное и динамическое навигационное меню для мобильных устройств с использованием чистого JavaScript, HTML и CSS.

Основы адаптивной навигации

Адаптивная навигация означает, что элементы навигационного меню автоматически подстраиваются под размер экрана устройства. Это достигается с помощью медиазапросов в CSS и JavaScript, которые динамически изменяют структуру и стили меню в зависимости от размеров экрана.

Преимущества адаптивной навигации

  1. Улучшенное пользовательское взаимодействие: пользователи могут легко ориентироваться по сайту на любых устройствах.
  2. Повышение скорости загрузки: адаптивная навигация помогает сократить время загрузки страниц за счет оптимизации контента для разных экранов.
  3. Лучшее SEO: поисковые системы предпочитают сайты, которые хорошо работают на мобильных устройствах.

Создание HTML структуры

Первым шагом является создание HTML структуры для нашего навигационного меню. Пример простой структуры навигационного меню:

html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Адаптивная навигация</title>

<link rel="stylesheet" href="styles.css">

</head>

<body>

<nav class="navbar">

<div class="navbar-brand">Мой сайт</div>

<button class="navbar-toggle" id="navbar-toggle">☰</button>

<ul class="navbar-menu" id="navbar-menu">

<li class="navbar-item"><a href="#">Главная</a></li>

<li class="navbar-item"><a href="#">О нас</a></li>

<li class="navbar-item"><a href="#">Услуги</a></li>

<li class="navbar-item"><a href="#">Контакты</a></li>

</ul>

</nav>

<script src="scripts.js"></script>

</body>

</html>

Стилизация с помощью CSS

Далее, создадим стили для нашего навигационного меню. Основная задача — сделать меню адаптивным с помощью медиазапросов.

css

/* styles.css */

body {

font-family: Arial, sans-serif;

}

.navbar {

display: flex;

justify-content: space-between;

align-items: center;

background-color: #333;

padding: 10px;

}

.navbar-brand {

color: #fff;

font-size: 1.5em;

}

.navbar-menu {

list-style-type: none;

display: flex;

margin: 0;

padding: 0;

}

.navbar-item {

margin-left: 15px;

}

.navbar-item a {

color: #fff;

text-decoration: none;

}

.navbar-toggle {

display: none;

font-size: 1.5em;

color: #fff;

background: none;

border: none;

cursor: pointer;

}

@media (max-width: 768px) {

.navbar-menu {

display: none;

flex-direction: column;

width: 100%;

}

.navbar-menu.active {

display: flex;

}

.navbar-toggle {

display: block;

}

.navbar-item {

margin: 10px 0;

}

}

Динамическое поведение с помощью JavaScript

Теперь добавим JavaScript для управления поведением меню на мобильных устройствах. Скрипт будет добавлять и удалять класс active у элемента меню при клике на кнопку.

javascript

// scripts.js

document.addEventListener('DOMContentLoaded', function() {

const navbarToggle = document.getElementById('navbar-toggle');

const navbarMenu = document.getElementById('navbar-menu');

navbarToggle.addEventListener('click', function() {

navbarMenu.classList.toggle('active');

});

});

Пример полного кода

Полный код, объединяющий HTML, CSS и JavaScript, выглядит следующим образом:

HTML

html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Адаптивная навигация</title>

<link rel="stylesheet" href="styles.css">

</head>

<body>

<nav class="navbar">

<div class="navbar-brand">Мой сайт</div>

<button class="navbar-toggle" id="navbar-toggle">☰</button>

<ul class="navbar-menu" id="navbar-menu">

<li class="navbar-item"><a href="#">Главная</a></li>

<li class="navbar-item"><a href="#">О нас</a></li>

<li class="navbar-item"><a href="#">Услуги</a></li>

<li class="navbar-item"><a href="#">Контакты</a></li>

</ul>

</nav>

<script src="scripts.js"></script>

</body>

</html>

CSS

css

Копировать код

/* styles.css */

body {

font-family: Arial, sans-serif;

}

.navbar {

display: flex;

justify-content: space-between;

align-items: center;

background-color: #333;

padding: 10px;

}

.navbar-brand {

color: #fff;

font-size: 1.5em;

}

.navbar-menu {

list-style-type: none;

display: flex;

margin: 0;

padding: 0;

}

.navbar-item {

margin-left: 15px;

}

.navbar-item a {

color: #fff;

text-decoration: none;

}

.navbar-toggle {

display: none;

font-size: 1.5em;

color: #fff;

background: none;

border: none;

cursor: pointer;

}

@media (max-width: 768px) {

.navbar-menu {

display: none;

flex-direction: column;

width: 100%;

}

.navbar-menu.active {

display: flex;

}

.navbar-toggle {

display: block;

}

.navbar-item {

margin: 10px 0;

}

}

JavaScript

javascript

// scripts.js

document.addEventListener('DOMContentLoaded', function() {

const navbarToggle = document.getElementById('navbar-toggle');

const navbarMenu = document.getElementById('navbar-menu');

navbarToggle.addEventListener('click', function() {

navbarMenu.classList.toggle('active');

});

});

Заключение

Создание адаптивного и динамического навигационного меню на чистом JavaScript, HTML и CSS не только улучшает пользовательский опыт, но и повышает производительность вашего веб-приложения. Следуя приведенным выше шагам, вы сможете легко реализовать подобное меню на своем сайте. Это меню будет адаптироваться к разным устройствам, обеспечивая удобную и интуитивно понятную навигацию для пользователей.