È stata implementata una modifica nell'implementazione degli TouchEvents di Chrome a partire dalla versione M37 (stabile nell'agosto 2014), che modifica le coordinate registrate in numeri in virgola mobile anziché in numeri interi.
Prima | Dopo |
---|---|
clientX: 167 clientY: 196 pageX: 167 pageY: 196 radiusX: 26 radiusY: 26 screenX: 167 screenY: 277 |
clientX: 167.33299255371094 clientY: 195.66700744628906 pageX: 167.33299255371094 pageY: 195.66700744628906 radiusX: 25.843116760253906 radiusY: 25.843116760253906 screenX: 167.33334350585938 screenY: 276.66668701171875 |
Il risultato di questa modifica è una risposta più fluida ai gesti degli utenti, poiché offre una maggiore precisione della posizione delle dita.
Utilizzando la demo di Rick Byers, puoi vedere che differenza enorme può fare quando disegni lentamente un vortice.

Ciò influirà solo sugli schermi con una densità di pixel superiore a 1. Per capire il motivo, vediamo un esempio.
Immagina di avere una griglia 3x3 di pixel CSS e la densità dello schermo è 3, ovvero abbiamo una griglia di pixel fisici 9x9 e i gesti dell'utente vanno da in alto a sinistra in basso a destra.

In origine, arrotondavamo la posizione dei tocchi al pixel CSS più vicino, il che significa che in questo gesto avresti eseguito i seguenti passaggi.

Non viene visualizzato nessuno dei passaggi intermedi che i pixel fisici potrebbero mostrare quando l'utente muove il dito.
Ora che abbiamo passato ai valori float, il nostro gesto può avere questo aspetto.

Nella maggior parte dei casi, non è richiesta alcuna modifica al codice, ma significa che tutte le animazioni o i movimenti eseguiti a seguito di TouchEvents saranno più fluidi, soprattutto per i gesti lenti.
È inoltre previsto di implementare questo miglioramento anche in Safari per dispositivi mobili: https://bugs.webkit.org/show_bug.cgi?id=133180.