Patterns for helping users move through interfaces and find content.
The system that lets users move through your interface. Navigation answers three questions:
Core principle: Users should never feel lost.
What: Show important items, collapse the rest.
DO:
DON'T:
Desktop (1200px+):
[Dashboard] [Projects] [Team] [Reports] [Settings] [Help]
Tablet (768px):
[Dashboard] [Projects] [Team] [Reports] [More ▼]
└─ Settings
└─ Help
Mobile (375px):
[☰] [Dashboard] [More ▼]
What: Navigation hidden behind a toggle, typically a ☰ icon.
DO:
DON'T:
[☰ Menu]
──────────────────────
[Avatar] User Name
user@email
──────────────────────
🏠 Dashboard
📁 Projects
👥 Team
📊 Reports
⚙️ Settings
──────────────────────
🚪 Sign out
What: Navigation that stays visible while scrolling.
| Type | Behavior |
|---|---|
| Always fixed | Always visible, takes space |
| Scroll-up reveal | Appears on scroll up, hides on scroll down |
| Compact on scroll | Shrinks when scrolling |
| Below-fold sticky | Becomes sticky after scrolling past hero |
DO:
DON'T:
/* Always visible */
.nav { position: fixed; top: 0; }
/* Compact on scroll */
.nav.scrolled { height: 48px; /* vs 64px default */ }
/* Hide on scroll down, show on scroll up */
.nav.hidden { transform: translateY(-100%); }
What: Tab bar at bottom of screen for primary navigation.
DO:
DON'T:
┌──────────────────────────────┐
│ │
│ [Content Area] │
│ │
├──────────────────────────────┤
│ 🏠 📁 ➕ 👤 ⚙️ │
│ Home Files New Profile More│
└──────────────────────────────┘
| Item Count | Label Visibility |
|---|---|
| 3 items | Labels always visible |
| 4-5 items | Labels always visible or active only |
| 5+ items | Consider other navigation pattern |
What: Vertical navigation, typically on left side.
| Type | Use Case |
|---|---|
| Fixed sidebar | Dashboard apps, admin tools |
| Collapsible | Space optimization |
| Icon-only (rail) | Minimal footprint |
| Expandable | Icon-only → full on hover |
DO:
DON'T:
┌──────────────────────────────────────┐
│ [Logo] [Collapse] │
├──────────────────────────────────────┤
│ MAIN │
│ 🏠 Dashboard │
│ 📁 Projects │
│ 📊 Analytics │
├──────────────────────────────────────┤
│ WORKSPACE │
│ 👥 Team │
│ ⚙️ Settings │
├──────────────────────────────────────┤
│ [Avatar] User Name [▼] │
└──────────────────────────────────────┘
What: Switching between content sections within a page.
DO:
DON'T:
| Variant | Use Case |
|---|---|
| Text tabs | Standard, most common |
| Icon + text | When icons aid recognition |
| Scrollable | Many tabs, mobile |
| Fitted | Equal-width tabs |
What: Large dropdown menus showing multiple categories.
DO:
DON'T:
Products ▼
┌─────────────────────────────────────────────────────┐
│ ELECTRONICS APPAREL HOME │
│ Phones Women's Furniture │
│ Laptops Men's Kitchen │
│ Tablets Kids Decor │
│ Accessories Shoes Bedding │
│ │
│ [Featured: New MacBook →] │
└─────────────────────────────────────────────────────┘
What: Keyboard-driven navigation and command execution.
DO:
DON'T:
⌘K
┌────────────────────────────────────────┐
│ 🔍 Type a command or search... │
├────────────────────────────────────────┤
│ RECENT │
│ 📄 Project Alpha │
│ 📊 Analytics Dashboard │
├────────────────────────────────────────┤
│ ACTIONS │
│ ➕ Create new project ⌘N │
│ 👤 Invite team member ⌘I │
│ ⚙️ Open settings ⌘, │
└────────────────────────────────────────┘
| Context | Recommended Pattern |
|---|---|
| Web app, many sections | Sidebar |
| Mobile app, 3-5 sections | Bottom nav |
| Content site, many categories | Mega menu |
| Power users | Command palette |
| Limited nav items | Priority+ |
| Mobile, complex nav | Hamburger + drawer |
| Dashboard, multiple views | Tabs |
| Requirement | Implemented? |
|---|---|
| ☐ Current location clear | |
| ☐ Available destinations visible | |
| ☐ Primary nav always accessible | |
| ☐ Mobile navigation works | |
| ☐ Keyboard navigation supported | |
| ☐ Deep linking possible | |
| ☐ Consistent across pages | |
| ☐ Active states clear |