Mobile-First
Progettare partendo dal mobile per costruire interfacce scalabili e performanti. Un cambio di mentalità, non solo di tecnica.
Cos'è il Mobile-First
Mobile-First è un approccio dove si inizia progettando per i dispositivi più piccoli, poi si espande progressivamente verso schermi più grandi. In pratica: gli stili CSS di base sono per il mobile (senza media query), e le media query con min-width aggiungono complessità per schermi più ampi.
Mobile-First non significa solo "fare un sito che funzioni sul telefono". Significa iniziare la progettazione da mobile. È un approccio che porta a interfacce più pulite, performanti e focalizzate sui contenuti essenziali.
Perché Mobile-First
Cinque ragioni concrete per adottare l'approccio mobile-first:
- 📱Traffico mobile: oltre il 60% del traffico web mondiale arriva da dispositivi mobili.
- ⚡Performance: partire dal minimo e aggiungere è più efficiente che partire dal massimo e ridurre.
- 🎯Priorità dei contenuti: lo schermo piccolo costringe a identificare cosa è veramente importante.
- 🔼Progressive Enhancement: ogni utente vede la versione base funzionante, poi progressivamente di più.
- 🔍SEO: Google usa il mobile-first indexing — valuta il tuo sito prima sulla versione mobile.
Confronto Pratico
La stessa griglia di card, nei due approcci. Il risultato visivo è identico, ma il codice mobile-first è più diretto e facile da mantenere.
/* parte dal desktop, poi sovrascrive */
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
@media (max-width: 1024px) {
.card-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 640px) {
.card-grid {
grid-template-columns: 1fr;
gap: 16px;
}
}/* parte dal mobile, poi espande */
.card-grid {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
}
@media (min-width: 640px) {
.card-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1024px) {
.card-grid {
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
}Come Implementarlo
Un processo pratico in 5 passi:
- 1️⃣Scrivi prima gli stili base senza media query. Questa versione deve funzionare su tutti i dispositivi.
- 2️⃣Usa solo
min-widthnelle media query — maimax-widthnell'approccio mobile-first. - 3️⃣Aggiungi complessità progressivamente — ogni breakpoint deve aggiungere stili, non correggerli.
- 4️⃣Testa partendo dal mobile — rimpicciolisci il browser prima di allargarlo, non il contrario.
- 5️⃣Ottimizza le immagini — usa
srcsetesizesper caricare la dimensione corretta per ogni schermo.
/* Passo 1: base = mobile */
.hero { padding: 32px 16px; }
.hero h1 { font-size: 1.75rem; }
/* Passo 2: tablet */
@media (min-width: 640px) {
.hero { padding: 48px 24px; }
.hero h1 { font-size: 2.25rem; }
}
/* Passo 3: desktop */
@media (min-width: 1024px) {
.hero { padding: 80px 48px; }
.hero h1 { font-size: 3rem; }
}Pattern Comuni
Cinque pattern che si ripetono in quasi ogni progetto mobile-first:
01
Stack → Side by Side
Elementi in colonna su mobile, affiancati su desktop. Il pattern più usato in assoluto.
02
Auto-Grid
repeat(auto-fit, minmax(240px, 1fr)) — griglia responsive senza media query.
03
Fluid Typography
clamp() per font che scalano fluidamente con la larghezza del viewport.
04
Show / Hide
Nascondere elementi non essenziali su mobile (display: none), mostrarli su desktop.
05
Progressive Padding
Spaziatura ridotta su mobile (16px), più generosa su desktop (48px+).
Tipografia Fluida
La funzione CSS clamp() permette font che scalano fluidamente tra un minimo e un massimo senza media query. Tre valori: minimo, valore fluido (in vw), massimo.
/* clamp(minimum, fluid-value, maximum) */
h1 {
/* Almeno 1.75rem, cresce con il viewport, mai più di 3.5rem */
font-size: clamp(1.75rem, 4vw + 1rem, 3.5rem);
}
h2 {
font-size: clamp(1.375rem, 3vw + 0.75rem, 2.25rem);
}
p {
font-size: clamp(1rem, 1.5vw + 0.75rem, 1.125rem);
}
.hero-title {
font-size: clamp(2rem, 5vw + 1rem, 4.5rem);
line-height: 1.1;
}Il valore centrale è quello "ideale" — spesso in vw ocalc(). Il browser lo usa se sta tra il minimo e il massimo; altrimenti usa il limite. Risultato: tipografia fluida garantita senza una sola media query.
Editor Interattivo
Un layout mobile-first completo: header, griglia di card che si espande con la larghezza. Prova a modificare i breakpoint e osserva il comportamento ridimensionando la preview.
Esercizi
✏️Metti in pratica
Esercizio A — Base
Converti in Mobile-First
Prendi un CSS desktop-first esistente e convertilo: cambia tutti i max-widthin min-width e riorganizza l'ordine degli stili. Il risultato visivo deve essere identico.
Esercizio B — Intermedio
Portfolio Responsive
Crea un portfolio con header (logo + nav), griglia di 6 progetti (1 col mobile → 2 col tablet → 3 col desktop), sezione bio e footer. Usa solo min-width nelle media query.
Esercizio C — Avanzato
Tipografia Fluida Completa
Implementa un sistema tipografico completamente fluido con clamp()per tutti i livelli: h1 (2rem → 4rem), h2 (1.5rem → 2.5rem), h3 (1.25rem → 1.75rem), p (1rem → 1.125rem). Nessuna media query per la tipografia.