Manuale completo del meta tag viewport
Tutto ciò che devi sapere per controllare zoom e layout sui dispositivi mobili
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
Il tag viewport dice al browser come scalare e dimensionare la pagina sui dispositivi mobili. Senza di esso, i browser mobile fingono di avere uno schermo largo circa 980px e rimpiccioliscono tutto, rendendo il sito illeggibile su smartphone.
Proprietà disponibili
width Consigliato
Imposta la larghezza del viewport logico. Quasi sempre si usa device-width.
width=device-widthUsa la larghezza reale del dispositivo — quasi sempre quello che vuoiwidth=500Forza una larghezza fissa di 500px — sconsigliato per layout responsiveheight Raramente usato
Imposta l'altezza del viewport. Il browser la gestisce automaticamente, quindi viene usato solo in casi molto specifici.
height=device-heightUsa l'altezza reale del dispositivoheight=800Forza un'altezza fissa di 800pxinitial-scale Consigliato
Zoom iniziale quando la pagina si carica. Il valore 1.0 corrisponde a nessuno zoom: la pagina occupa il 100% del viewport.
initial-scale=1.0Nessuno zoom iniziale — standard per qualsiasi sito responsiveinitial-scale=0.5La pagina appare rimpicciolita al 50% all'aperturainitial-scale=2.0La pagina appare ingrandita al 200% all'aperturaminimum-scale Opzionale
Quanto l'utente può rimpicciolire al massimo (zoom out). Il range accettato è da 0.1 a 10.
minimum-scale=0.5L'utente può ridurre la pagina fino al 50%minimum-scale=1.0L'utente non può rimpicciolire oltre il 100%maximum-scale Attenzione accessibilità
Quanto l'utente può ingrandire al massimo (zoom in). Il range accettato è da 0.1 a 10.
maximum-scale=1.0Blocca completamente lo zoom in — sconsigliato per siti pubblicimaximum-scale=3.0L'utente può ingrandire fino al 300%maximum-scale=5.0Permette uno zoom generoso — buona scelta per l'accessibilitàImpostare maximum-scale=1.0 blocca lo zoom per gli utenti ipovedenti. Le linee guida WCAG 1.4.4 lo considerano una violazione dell'accessibilità. Safari su iOS dal 2022 ignora questo parametro per ragioni di accessibilità.
user-scalable Attenzione accessibilità
Abilita o disabilita completamente il pinch-to-zoom dell'utente.
user-scalable=yesPermette il pinch-to-zoom — valore di defaultuser-scalable=noBlocca il pinch-to-zoom — sconsigliato per siti pubbliciuser-scalable=1Equivalente a yesuser-scalable=0Equivalente a noSafari iOS e Chrome Android recenti ignorano questo parametro quando l'utente ha attivato le impostazioni di accessibilità del dispositivo.
viewport-fit iPhone con notch
Controlla come il contenuto si adatta ai display con notch (iPhone X e successivi) o bordi curvi.
viewport-fit=autoComportamento default — il contenuto rispetta le aree sicure attorno al notchviewport-fit=containIl contenuto rimane dentro l'area sicura, non va sotto il notchviewport-fit=coverIl contenuto si estende sotto il notch/bordi curvi — da usare con le variabili CSS safe-area-inset-*Esempio CSS per viewport-fit=cover:
body {
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
Riepilogo proprietà
| Proprietà | Valori comuni | Default |
|---|---|---|
| width | device-width, numero px | 980px |
| height | device-height, numero px | automatico |
| initial-scale | 0.1 – 10 | 1.0 |
| minimum-scale | 0.1 – 10 | 0.1 |
| maximum-scale | 0.1 – 10 | 10 |
| user-scalable | yes / no / 1 / 0 | yes |
| viewport-fit | auto / contain / cover | auto |
Esempi pratici
✅ Standard — responsive senza restrizioni (raccomandato)
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
La scelta corretta per qualsiasi sito web pubblico. Permette lo zoom e si adatta a ogni schermo.
⚙️ App web gestionale con pinch-to-zoom bloccato
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
Usato tipicamente in applicazioni touch (es. gestionali, magazzino, POS) dove lo zoom accidentale romperebbe il layout. Non adatto a siti pubblici.
📱 Con supporto notch iPhone (app full-screen)
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
Permette al contenuto di estendersi sotto il notch. Va abbinato alle variabili CSS
safe-area-inset-* per evitare che elementi importanti vengano nascosti.♿ Zoom limitato ma accessibile (compromesso)
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0" />
Permette all'utente di ingrandire fino al 300% (utile per ipovedenti) senza poter rimpicciolire oltre il 100%. Buon compromesso tra controllo del layout e accessibilità.