لمسة دقيقة للإيماءات الدقيقة

تم إجراء تغيير في تنفيذ TouchEvents في Chrome اعتبارًا من الإصدار M37 (الإصدار الثابت في آب (أغسطس) 2014)، ما يؤدي إلى تغيير الإحداثيات التي يتم الإبلاغ عنها إلى أعداد كسرية بدلاً من أعداد صحيحة.

قبل بعد
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. لفهم السبب، لنطّلِع على مثال.

تخيل أنّ لديك شبكة 3×3 من بكسلات CSS وكثافة الشاشة هي 3، أي أنّ لدينا شبكة من بكسلات حقيقية بحجم 9×9، ويستخدم المستخدم الإيماءات من أعلى يمين إلى أسفل يمين.

بكسل CSS وشبكة بكسل الشاشة

في الأصل، كنا نُقرّب موضع اللمس إلى أقرب بكسل في CSS، ما يعني أنّك ستنتهي في هذه الإيماءة إلى الخطوات التالية.

دقة بكسل CSS أثناء الإيماءة

لا يمكننا رسم أيّ من الخطوات الوسيطة التي يمكن أن تعرِضها وحدات البكسل المادية عندما يحرِّك المستخدم إصبعه.

بعد أن انتقلنا إلى العناصر العائمة، يمكن أن تبدو إيماءتنا على النحو التالي.

دقة النقطة العائمة أثناء الإجراء

في معظم الحالات، لن يتطلّب ذلك إجراء أي تغييرات في الرمز، ولكن سيؤدي ذلك إلى أن تكون أي رسوم متحركة أو حركات تجريها نتيجةً لأحداث اللمس أكثر سلاسة، خاصةً مع الإيماءات البطيئة.

هناك أيضًا خطة لتوفير هذا التحسين في متصفّح Safari للأجهزة الجوّالة أيضًا: https://bugs.webkit.org/show_bug.cgi?id=133180.