Въведение в Mobile-First ..
Mobile-first означава да проектирате първо за мобилни устройства, после да разширявате за desktop. Google използва mobile-first indexing от 2019.
Защо Mobile-First?
Статистика за 2024
- 59% от уеб трафика е от мобилни устройства
- 38% от desktop
- 3% от таблети
Google индексира мобилната версия първо. Ако мобилната версия е лоша, ранкингът страда.
Mobile-First CSS
/* Base styles за мобилни (без media query) */
.container {
padding: 16px;
width: 100%;
}
.grid {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
}
/* Tablet - min-width подход */
@media (min-width: 768px) {
.container {
padding: 24px;
max-width: 720px;
margin: 0 auto;
}
.grid {
grid-template-columns: repeat(2, 1fr);
gap: 24px;
}
}
/* Desktop */
@media (min-width: 1024px) {
.container {
padding: 32px;
max-width: 1200px;
}
.grid {
grid-template-columns: repeat(3, 1fr);
gap: 32px;
}
}
Touch-Friendly Design
Tap Target Size
Minimum 44x44 pixels за интерактивни елементи:
.button {
min-height: 44px;
min-width: 44px;
padding: 12px 24px;
}
.nav-link {
display: block;
padding: 12px 16px;
}
Spacing Between Elements
.link-list a {
display: block;
padding: 12px;
margin: 4px 0;
}
Viewport Meta Tag
<meta name="viewport" content="width=device-width, initial-scale=1.0">
width=device-width: Ширината е равна на устройството
initial-scale=1.0: Начален zoom 100%
Responsive Images
<img
src="image-800.jpg"
srcset="image-400.jpg 400w,
image-800.jpg 800w,
image-1200.jpg 1200w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
33vw"
alt="Description"
loading="lazy"
>
Mobile Performance
Критични фактори
- Размер на страницата: Под 1MB initial load
- JavaScript: Минимизиране и code splitting
- Изображения: WebP/AVIF, lazy loading
- Fonts: Subsetting, font-display: swap
- Third-party scripts: Async/defer loading
Network Conditions
Мобилните устройства често имат бавна връзка:
- 3G: 780ms RTT, 0.4 Mbps
- 4G: 170ms RTT, 9 Mbps
- WiFi: 40ms RTT, 30 Mbps
Mobile Navigation Patterns
Hamburger Menu
<button class="menu-toggle" aria-expanded="false" aria-controls="nav">
<span class="sr-only">Toggle navigation</span>
<span class="hamburger"></span>
</button>
<nav id="nav" class="nav" hidden>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
Bottom Navigation (App-like)
.bottom-nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
display: flex;
justify-content: space-around;
background: var(--bg);
padding: 8px 0 env(safe-area-inset-bottom);
}
Testing
- Chrome DevTools Device Mode
- Real device testing (iOS, Android)
- BrowserStack/Sauce Labs
- Lighthouse Mobile audit
Заключение
Mobile-first не е тренд - това е стандартът. Проектирайте първо за мобилни устройства за най-добри резултати.
Брой думи: 3,023