GH GambleHub

Design mobile-safe

1) Principi Mobile-safe

1. Thumb-first - Le zone sono all'interno del pollice (navigazione in basso, FEB/primary a destra in basso).
2. Touch-friendly: obiettivi 40-48 px con campi; Distanza 8-12 px.
3. Safe-area by design - Prendiamo in considerazione i tagli/le zone gestuali ('env (safe-area-inset-)').
4. La velocità è più importante della bellezza, LCP 2. 5 c, INP da 200 mc, CLS da 0. 1 (p75).
5. Moderazione: minimo modaletti, minimo moduli, massimo completamento automatico.
6. Rete e batteria: traffico economico, modalità offline, retrai corretti.


2) Griglia, breakpoint e safe-area

Breakpoint: ≤ 480 (mobile), 481-768 (tablet verticale), 769-1024 (tablet orizzontale).
Contenitori max-width, schede flessibili 1-2 colonne.
I pannelli inferiori sono 56 px, la scorta è sotto la navigazione.

CSS:
css
:root { --inset-b: env(safe-area-inset-bottom); --inset-t: env(safe-area-inset-top); }
.app { padding-bottom: calc(16px + var(--inset-b)); padding-top: calc(8px + var(--inset-t)); }

3) Testo, pulsanti e interazioni

Testo: 16-18 px base, stringa 1. 4–1. 6, lunghezza della riga 40-70 caratteri.
Pulsanti: altezza 44-52 px, attivo/attivo/disabled chiaro; icone + testo, non solo icone.
I gesti hanno sempre un'alternativa (pulsante/menu/punto caldo).
Le animazioni sono su «form/opacity» e rispettano «preferers-reduced-motion».


4) Moduli, tastiere e completamento automatico

Minimizzare i campi, utilizzare inputmode/type e autocomplete:
html
<input type="email" inputmode="email" autocomplete="email">
<input type="tel" inputmode="tel" autocomplete="tel">
<input type="number" inputmode="numeric" pattern="[0-9]">
<input type="text" autocomplete="one-time-code" />

Le maschere sono morbide (il formato viene visualizzato, ma non si rompe l'input).

Macchina/correzione automatica in senso (' autocapitalize =" sentencesoff"`).
Suggerimenti/errori accanto al campo e disponibili per lo screener ('aria-describedby').

5) Navigazione e architettura delle schermate

Navigazione inferiore (fino a 5 punti) + segno indietro.
Fino a 3-5 tappe prima dell'azione di destinazione.
Evitare «hamburger» per sezioni critiche; Usa tab/segmented.
Stati UI: «loading/empty/error/success» sono chiari, con azioni e spiegazioni.


6) Prestazioni e risparmi

Code-split e widget pigri; grafici/mappe carichiamo «su richiesta».
Le risorse critiche sono «pratoad», il resto è «defer »/« lazy».
Immagini "+" srcset/sizes "," loading = "lazy" ".
Caratteri: 1 variabile WOFF2, 'font-display: swap', pratoad solo di base.
Cache e offline tramite Service Worker (PWA), stale-while-revalidate.


7) Reti, offline e retrai

Cordialità a 3G/ritardo elevato: limite di richieste, batching, jittered backoff.
Schermata offline con cache di dati critici e in coda di sincronizzazione.
Rispetto del risparmio dei dati: Client Hints/Save-Data per immagini leggere, senza video automatici.

JS (rilevatore dati/rete):
js const saveData = navigator.connection?.saveData;
const slow = ['slow-2g','2g'].includes(navigator.connection?.effectiveType);
if (saveData          slow) enableLiteMode(); // менее тяжелые ресурсы

8) Disponibilità (A11y) sul mobile

Controllo completo con tastiera/interruttori e attivazione di lettura.
Contrasto di WCAG AA, testo di alternative ('alt', 'aria-label').
Grandi target e pausa animazione; i gesti sono duplicati da pulsanti.
Per i diagrammi, un breve riepilogo di testo e una tabella dati.


9) Tema scuro, luminosità e haptics

Il tema oscuro non è solo un'inversione; controlla i contrasti e gli accenti di colore.
Rispettare l'argomento di sistema («preferers-color-scheme»).
Haptics - dosato (successo/errore), la possibilità di disattivare.


10) Privacy, autorizzazioni e sicurezza

Autorizzazioni solo nel momento del valore (fotocamera scansionata del documento).
Spiegazione del perché e del fallback senza autorizzazione.
WebAuthn/biometria al posto della password; i gestori delle password sono supportati.
Nascondere i campi sensibili durante la contrazione; timeout di avvertimento.


11) Notifiche e attività di sfondo

Scenari di valore chiari, non parziali; Orologio tranquillo.
One-tap unsubscribe e centro preferenze.
I picchi di sfondo sono piccole porzioni, con limiti di batteria/rete.


12) Immagini, media e adattabilità

Placeholder con dimensioni specificate → CLS zero.
Video predefinito senza scheda automatica, con sottotitoli e controlli; bitrate adattivi.
Icone - Vettore (SVG) o sprite; non caricare set da 1 MB.


13) Snippet e impostazioni

meta viewport e accenti:
html
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="theme-color" content="#11131A">
Stabilizzare il layout e nasconderlo al di fuori dello schermo:
css
.card { content-visibility: auto; contain-intrinsic-size: 600px 400px; }
Modalità movimento ridotto:
css
@media (prefers-reduced-motion: reduce) { { animation: none!important; transition: none!important; } }

14) Test-piano (minimo)

Dispositivi: 1 iOS + 1 Android (piccolo/medio/grande schermo), ritratto/paesaggio.
Reti offline, 3G, 4G (throttle) Abilita Save-Data.
Disponibilità: script VoiceOver/TalkBack, tastiera, contrasto.
Perfomance: Web-Vitals (RUM), profilatore; grandi elenchi, input/scroll/gesti.
Resilienza: rotazione, riduzione/restituzione, omicidio del processo, ripristino dello stato.
Sicurezza: permessi, timeout della sessione, informazioni private nascoste, biometria.


15) Metriche Mobile-safe

LCP/INP/CLS (p75, mobile-solo).
Time-to-Action (prima del click di destinazione primario).
Tap Accuracy (quota di false tappe di elementi ravvicinati).
Crash-free sessions/ANR rate (applicazioni/web).
Data per sessione e Battery impatto (sfondo/primo piano).
Opt-in/opt-out cannoni e engagement.


16) Anti-pattern

Pulsanti 28-32 px, elenchi serrati, «mappe» senza campo - errori.
Testo 12-14 px su sfondo grigio chiaro.
Modalk sopra i modali; Chiudere con un solo gesto.
Video/animazioni automatiche su 3G/Save-Data.
Funzioni «solo con un gesto», senza un pulsante/menu.
Le safe-area non registrate → la sovrapposizione del contenuto con una frangia o un pannello swipe.


17) Assegno-foglio schermo

  • Target 48 px, 8-12 px
  • Safe-area учтен (`viewport-fit=cover`, `env(safe-area-inset-)`)
  • Testo ≥ 16 px, contrasto AA, attivo/attivo visibile
  • Moduli: corretti 'type/inputmode/autocomplete', completamento automatico
  • LCP ≤ 2. 5 c, INP da 200 mc, CLS da 0. 1 (mobile)
  • Lazy-loading blocchi pesanti, downsampling elenchi
  • Schermata offline, retrai backoff, modalità Save-Data
  • Pashi e autorizzazioni - su richiesta, con spiegazione e rifiuto
  • Tema scuro e reduced-motion supportati
  • Test: iOS/Android, ritratto/paesaggio, 3G/offline, passaggio SR

18) Piano di implementazione (3 iterazioni)

Iterazione 1 - Base (1-2 settimane):
  • Griglia e safe-area, target 48 px, tipi di tastiera/completamento automatico, Web-Vitals base, lazy immagini, tema scuro.
Iterazione 2 - Prestazioni e sostenibilità (3-4 settimane):
  • Code-split, content-visibility, offline + SW, modalità Save-Data, retrai/code, ripristino dello stato, controllo A11y.
Iterazione 3 - Ottimizzazione e scala (continua):
  • Dashboard RUM, analisi del traffico/batteria, haptics, script di risoluzione, miglioramento degli elenchi (virtualizzazione), giochi-days regolari di reti mobili.

19) Mini FAQ

È necessario un menu mobile separato?
Sì, ma la priorità è la navigazione inferiore con 3-5 punti; hamburger per il secondario.

Come ridurre gli errori dei pulsanti?
Aumentare gli obiettivi a 48 px, aggiungere campi intorno, esplorare verticalmente, utilizzare haptic per «successo/errore».

Offline è obbligatoria?
Per gli script critici, sì: cache, coda di azioni e suggerimenti corretti all'utente.


Totale

Mobile-safe design è una combinazione di tangenti ergonomici, contabilità safe-area, prestazioni, disponibilità e resistenza alle reti/batteria. Seguire i fogli di assegno, misurare il Web-Vitals negli utenti reali, rispettare la privacy e le impostazioni di sistema - e la tua interfaccia sarà conveniente e affidabile su qualsiasi dispositivo mobile.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.