정밀한 터치로 정확한 동작

M37 (2014년 8월 안정화 버전)부터 Chrome의 TouchEvents 구현에 변경사항이 적용되어 보고된 좌표가 정수가 아닌 부동 소수점 수로 변경됩니다.

이전 이후
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

이 변경사항의 결과로 손가락 위치의 정확성이 높아져 사용자 동작에 더 원활하게 반응할 수 있습니다.

릭 바이어스 데모를 사용하면 소용돌이를 천천히 그릴 때 얼마나 큰 차이가 있는지 확인할 수 있습니다.

터치 이벤트의 차이점

이는 픽셀 밀도가 1보다 큰 화면에만 영향을 미칩니다. 이유를 이해하려면 예를 살펴보겠습니다.

CSS 픽셀로 된 3x3 그리드가 있고 화면 밀도가 3이라고 가정해 보겠습니다. 즉, 9x9 실제 픽셀 그리드가 있고 사용자 동작이 왼쪽 상단에서 오른쪽 하단으로 이루어집니다.

CSS 픽셀 및 화면 픽셀 그리드

원래는 터치 위치를 가장 가까운 CSS 픽셀로 반올림했습니다. 즉, 이 동작에서는 다음 단계가 실행됩니다.

동작 중 CSS 픽셀 정밀도

사용자가 손가락을 움직일 때 실제 픽셀이 표시할 수 있는 중간 단계를 그리지 못합니다.

이제 부동 소수점 수로 전환했으므로 동작이 다음과 같이 표시될 수 있습니다.

동작 중에 부동 소수점 정밀도

대부분의 경우 코드를 변경할 필요는 없지만 TouchEvents의 결과로 실행되는 애니메이션이나 움직임이 특히 느린 동작의 경우 더 부드럽게 실행됩니다.

모바일 Safari에도 이 개선사항을 적용할 계획입니다(https://bugs.webkit.org/show_bug.cgi?id=133180).