Навигация Mobile-First
Часть раздела Practical Frontend путешествия по HTML на Coddy — урок 8 из 35.
Принцип навигации Mobile-first означает создание простого, удобного для сенсорного управления меню для небольших экранов с последующим его расширением для экранов большего размера.
Начните с базовой структуры мобильной навигации: внутри элемента <nav> добавьте кнопку и список.
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>Сначала примените стили для мобильных устройств. На маленьких экранах → показывайте кнопку «меню» и скрывайте список.
.menu-toggle {
display: block;
//еще несколько стилей
}
.nav-list {
display: none;
//еще несколько стилей
}Затем используйте медиа-запросы для больших экранов. На больших экранах → показывайте меню в виде горизонтального списка вверху и скройте кнопку «меню».
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}Этот подход гарантирует, что навигация оптимизирована в первую очередь для мобильных устройств, а затем улучшена для больших экранов.
Задание
ЛегкоДан HTML-файл с навигацией, содержащей кнопку меню и список, в данный момент список всегда виден.
Ваша задача — исправить стиль навигации в стиле mobile-first следующим образом:
- Сделать список навигации скрытым по умолчанию на мобильных экранах.
- Сделать список навигации видимым на больших экранах (
display: flex).
Шпаргалка
Навигация в стиле mobile-first начинается с простого, удобного для сенсорного управления меню для небольших экранов, а затем расширяется для экранов большего размера.
Базовая структура мобильной навигации:
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>Стили для мобильных устройств (показать кнопку, скрыть список):
.menu-toggle {
display: block;
}
.nav-list {
display: none;
}Стили для десктопа с использованием медиа-запросов (скрыть кнопку, показать горизонтальный список):
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}Попробуйте сами
<!DOCTYPE html>
<html>
<head>
<title>Mobile-First Navigation</title>
<style>
:root {
--primary-color: #4a6de5;
--text-color: #333333;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-weight: bold;
color: var(--primary-color);
text-decoration: none;
font-size: 1.5rem;
}
.menu-toggle {
display: block;
background-color: var(--primary-color);
color: white;
border: none;
padding: 0.5rem 1rem;
cursor: pointer;
}
.nav-list {
list-style: none;
padding: 0;
margin: 1rem 0 0 0;
width: 100%;
}
.nav-list li a {
color: var(--text-color);
text-decoration: none;
display: block;
padding: 0.5rem 0;
}
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
margin: 0;
width: auto;
}
.nav-list li {
margin: 0 0 0 1.5rem;
}
}
</style>
</head>
<body>
<header class="site-header">
<nav class="nav-container">
<a href="#" class="logo">MySite</a>
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
</body>
</html>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Practical Frontend
2Стратегия Mobile-First
Что означает «mobile-first»Типографика Mobile-FirstНавигация Mobile-FirstИзображения Mobile-FirstФормы Mobile-FirstЗадание на повторение