Files
wow-design-wiki/mobile/mobile-navigation-patterns.md
neo 083f6ba783 feat(mobile): comprehensive mobile web design patterns — 6 new articles
- mobile-patterns.md: Mobile layout & pattern systems (18.5KB)
  Fluid typography, container queries, safe-area, CSS architecture,
  touch-optimized components, iOS/Android specifics, testing checklist

- mobile-layout-patterns.md: Mobile layout systems (11.5KB)
  CSS grid, single-column stack, full-bleed hero, card stack,
  swipeable carousel, split-screen, off-canvas nav, bottom sheet,
  FAB, component patterns

- mobile-navigation-patterns.md: Mobile navigation (9.8KB)
  Bottom tab bar, top nav, hamburger menu, bottom sheet nav,
  pill nav, comparison matrix, navigation rules, swipe navigation,
  breadcrumbs, tab content

- mobile-form-patterns.md: Mobile form patterns (10.3KB)
  Input types, keyboards, floating labels, validation patterns,
  progressive disclosure, autocomplete, masked inputs, toggle/radio,
  form anti-patterns

- mobile-interaction-patterns.md: Touch & gestures (16.7KB)
  Swipe detection, long press, pull-to-refresh, touch feedback,
  scroll-reveal, parallax, sticky scroll, CSS scroll animations,
  touch carousel, haptic feedback, passive listeners

- mobile-performance-patterns.md: Performance optimization (12.3KB)
  Core Web Vitals (LCP/INP/CLS), LCP optimization, INP debugging,
  CLS prevention, image optimization, lazy loading, service workers,
  CSS/JS optimization, network optimization

- mobile-landing-patterns.md: Landing page patterns (21.3KB)
  Section sequencing, hero, social proof, feature cards,
  CTA patterns (inline/sticky/full-bleed), testimonials, pricing,
  FAQ accordion, footer, mobile checklist
2026-07-03 20:15:10 +05:00

437 lines
9.6 KiB
Markdown

---
title: Mobile Navigation Patterns
created: 2026-07-03
updated: 2026-07-03
type: system
tags: [mobile, navigation, ux, bottom-nav, hamburger, gesture]
sources:
- https://www.uxpin.com/studio/blog/mobile-navigation-examples/
- https://www.uxpin.com/studio/blog/mobile-navigation-patterns-pros-and-cons/
- https://www.seven-squar-tech.com/which-mobile-navigation-patterns-works-what-fails/
- https://claritee.io/blog/creative-mobile-ui-patterns-for-enhanced-navigation/
confidence: high
---
# Mobile Navigation Patterns — Мобильная навигация
## 1. Типы навигации для мобильных
### 1.1 Bottom Tab Bar (Наиболее предпочтительная)
```css
.bottom-nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: calc(56px + var(--safe-bottom));
padding-bottom: var(--safe-bottom);
background: var(--surface-1);
border-top: 1px solid var(--border-1);
display: flex;
justify-content: space-around;
align-items: center;
z-index: 100;
box-shadow: 0 -2px 10px rgba(0,0,0,0.05);
}
.bottom-nav__item {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
padding: 8px 16px;
color: var(--text-secondary);
text-decoration: none;
font-size: 12px;
transition: color 0.2s;
min-width: 48px;
min-height: 48px;
justify-content: center;
}
.bottom-nav__item.active {
color: var(--primary);
}
.bottom-nav__item.active .bottom-nav__icon {
transform: scale(1.1);
}
.bottom-nav__icon {
width: 24px;
height: 24px;
transition: transform 0.2s;
}
```
**Правила:**
- 3-5 элементов максимум
- Иконка + подпись
- Текущий раздел выделен
- Не скрывать при скролле
- Лучше чем hamburger (все элементы видны)
### 1.2 Top Navigation Bar
```css
.top-nav {
position: sticky;
top: 0;
left: 0;
right: 0;
height: 56px;
padding: 0 16px;
background: var(--surface-1);
border-bottom: 1px solid var(--border-1);
display: flex;
align-items: center;
justify-content: space-between;
z-index: 100;
}
.top-nav__title {
font-size: var(--text-lg);
font-weight: 600;
}
.top-nav__actions {
display: flex;
gap: 16px;
align-items: center;
}
.top-nav__action {
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: transparent;
border: none;
color: var(--text-primary);
cursor: pointer;
transition: background 0.2s;
}
.top-nav__action:active {
background: var(--surface-2);
}
```
**Правила:**
- Sticky при скролле (не fixed)
- Логотип слева, действия справа
- Заголовок по центру
- Минимум 2-3 действия
### 1.3 Hamburger Menu (Slide-in Drawer)
```css
.hamburger-menu {
position: fixed;
top: 0;
left: 0;
width: 85vw;
max-width: 320px;
height: 100dvh;
background: var(--surface-1);
transform: translateX(-100%);
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 1000;
padding: 24px;
padding-top: calc(24px + var(--safe-top));
overflow-y: auto;
}
.hamburger-menu.open {
transform: translateX(0);
}
.hamburger-menu__overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease;
z-index: 999;
}
.hamburger-menu.open + .hamburger-menu__overlay {
opacity: 1;
visibility: visible;
}
.hamburger-menu__link {
display: flex;
align-items: center;
gap: 12px;
padding: 16px;
color: var(--text-primary);
text-decoration: none;
font-size: var(--text-base);
border-radius: 8px;
transition: background 0.2s;
}
.hamburger-menu__link:active {
background: var(--surface-2);
}
.hamburger-menu__link .menu-icon {
width: 24px;
height: 24px;
}
```
**Правила:**
- 5-8 пунктов максимум
- Иконка + текст
- Разделители между секциями
- Закрывать по тапу на overlay или свайпу
- Всегда видный close button
### 1.4 Bottom Sheet Navigation
```css
.bottom-sheet-nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: var(--surface-1);
border-radius: 16px 16px 0 0;
transform: translateY(100%);
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 1000;
padding: 16px;
padding-bottom: calc(16px + var(--safe-bottom));
max-height: 70dvh;
overflow-y: auto;
}
.bottom-sheet-nav.open {
transform: translateY(0);
}
.bottom-sheet-nav__handle {
width: 40px;
height: 4px;
background: var(--border-1);
border-radius: 2px;
margin: 0 auto 16px;
cursor: grab;
}
.bottom-sheet-nav__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.bottom-sheet-nav__item {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
padding: 16px;
border-radius: 12px;
text-decoration: none;
color: var(--text-primary);
}
.bottom-sheet-nav__item:active {
background: var(--surface-2);
}
.bottom-sheet-nav__item .nav-icon {
width: 32px;
height: 32px;
background: var(--surface-2);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
}
```
### 1.5 Pill Navigation (Chip Scroller)
```css
.pill-nav {
display: flex;
gap: 8px;
overflow-x: auto;
padding: 12px 16px;
scrollbar-width: none;
-webkit-overflow-scrolling: touch;
}
.pill-nav::-webkit-scrollbar {
display: none;
}
.pill-nav__item {
padding: 8px 16px;
border-radius: 24px;
background: var(--surface-2);
color: var(--text-secondary);
white-space: nowrap;
font-size: var(--text-sm);
border: 1px solid var(--border-1);
text-decoration: none;
transition: all 0.2s;
min-height: 36px;
display: flex;
align-items: center;
}
.pill-nav__item.active {
background: var(--primary);
color: white;
border-color: var(--primary);
}
.pill-nav__item:active {
transform: scale(0.95);
}
```
**Где использовать:** Категории, фильтры, быстрые действия.
## 2. Navigation Comparison Matrix
| Паттерн | Кол-во пунктов | Видимость | Доступность | Скорость |
|---------|---------------|-----------|-------------|----------|
| Bottom Tab | 3-5 | ★★★★★ | ★★★★★ | ★★★★★ |
| Top Nav | 2-3 | ★★★★☆ | ★★★★☆ | ★★★★☆ |
| Hamburger | 5-8 | ★☆☆☆☆ | ★★★☆☆ | ★★☆☆☆ |
| Bottom Sheet | 6-12 | ★☆☆☆☆ | ★★★☆☆ | ★★★☆☆ |
| Pill Nav | 5-15 | ★★★★☆ | ★★★★☆ | ★★★★☆ |
## 3. Navigation Rules
### Golden Rules
1. **3-5 основных разделов** — больше требует hierarchy
2. **Bottom Tab > Hamburger** — видимая навигация всегда лучше
3. **Иконка + текст** — всегда, никогда только иконки
4. **Текущий раздел всегда выделен** — не заставляйте пользователя думать
5. **Навигация не исчезает при скролле** — sticky или fixed
6. **Один паттерн на сайт** — не смешивайте bottom tab и hamburger
### When to Use What
| Ситуация | Паттерн |
|----------|---------|
| 3-5 основных разделов | Bottom Tab Bar |
| Много разделов (>5) | Bottom Tab + More (bottom sheet) |
| Product page (1 раздел) | Top Nav |
| Landing page (1 страница) | Нет навигации или якоря |
| Admin panel | Side drawer (left) |
| E-commerce categories | Pill Nav |
## 4. Navigation Patterns for Content
### 4.1 Swipe to Navigate
```css
.swipe-container {
display: flex;
overflow-x: hidden;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
}
.swipe-container .page {
flex: 0 0 100%;
scroll-snap-align: start;
}
```
### 4.2 Breadcrumbs (Mobile)
```css
.breadcrumbs {
display: flex;
align-items: center;
gap: 8px;
padding: 12px 16px;
overflow-x: auto;
scrollbar-width: none;
white-space: nowrap;
font-size: var(--text-sm);
}
.breadcrumbs::-webkit-scrollbar {
display: none;
}
.breadcrumbs__item {
color: var(--text-secondary);
text-decoration: none;
}
.breadcrumbs__item.active {
color: var(--text-primary);
font-weight: 500;
}
.breadcrumbs__separator {
color: var(--text-secondary);
font-size: 12px;
}
```
### 4.3 Tab Content Navigation
```css
.tab-content {
position: relative;
}
.tab-content__header {
position: sticky;
top: 56px;
background: var(--surface-1);
border-bottom: 1px solid var(--border-1);
z-index: 50;
}
.tab-content__body {
padding: 16px;
}
.tab-content__section {
margin-bottom: 32px;
}
.tab-content__section-title {
font-size: var(--text-xl);
font-weight: 700;
margin-bottom: 16px;
position: sticky;
top: 100px;
background: var(--surface-1);
padding: 8px 0;
z-index: 10;
}
```
## 5. Navigation Anti-Patterns
| ❌ Плохо | ✅ Хорошо |
|----------|-----------|
| Hamburger для 3-4 разделов | Bottom Tab Bar |
| Скрытие навигации при скролле | Sticky/Fixed навигация |
| Только иконки без текста | Иконка + подпись |
| 6+ пунктов в bottom nav | Разделить на разделы |
| Навигация на top для основного | Bottom для основных |
| Нет выделенного активного состояния | Четкий active state |