Cảm ứng chính xác cho các cử chỉ chính xác

Matt Gaunt

Một thay đổi đã được áp dụng trong việc triển khai TouchEvents của Chrome kể từ M37 (ổn định vào tháng 8/2014), thay đổi các toạ độ được báo cáo thành các số thực dấu phẩy động thay vì số nguyên.

Trước Sau
clientX: 167
clientY: 196
trangX:   167
trangY:   196
RadiusX: 26
salesY: 26
screenX: 167
screenY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX: 167.33299255371094
pageY: 195.6670074462X62315.6 bán kính 195.6238.56
8:38.38


Kết quả của sự thay đổi này có nghĩa là bạn sẽ phản hồi mượt mà hơn với các cử chỉ của người dùng vì điều này giúp bạn có được vị trí ngón tay chính xác hơn.

Khi sử dụng bản minh hoạ của Rick Byers, bạn có thể thấy điều này tạo ra sự khác biệt lớn như thế nào khi vẽ một đường xoáy từ từ.

Sự khác biệt trong sự kiện chạm.

Việc này chỉ ảnh hưởng đến các màn hình có mật độ pixel lớn hơn 1. Để hiểu lý do, hãy xem một ví dụ.

Hãy tưởng tượng bạn có một lưới pixel CSS 3x3 và mật độ màn hình là 3, nghĩa là chúng ta có một lưới 9x9 pixel vật lý và các cử chỉ của người dùng từ trên cùng bên trái đến dưới cùng bên phải.

CSS Pixel và lưới pixel màn hình.

Ban đầu, chúng ta làm tròn vị trí các thao tác chạm đến pixel CSS gần nhất, điều đó có nghĩa là trong cử chỉ này, bạn sẽ thực hiện các bước sau.

Độ chính xác của pixel CSS trong cử chỉ.

Chúng ta bỏ lỡ việc vẽ bất kỳ bước trung gian nào mà các pixel thực tế có thể hiển thị khi người dùng di chuyển ngón tay.

Giờ đây, khi chúng ta đã chuyển sang float, cử chỉ của chúng ta sẽ có dạng như sau.

Độ chính xác nổi trong cử chỉ.

Trong hầu hết các trường hợp, thao tác này sẽ không yêu cầu bất kỳ thay đổi nào trong mã của bạn, nhưng có nghĩa là mọi ảnh động hoặc chuyển động mà bạn thực hiện do TouchEvent, sẽ mượt mà hơn, đặc biệt là đối với các cử chỉ chậm.

Chúng tôi cũng có kế hoạch đưa cải tiến này vào Safari dành cho thiết bị di động: https://bugs.webkit.org/show_bug.cgi?id=133180.