幾種普及得比較好的觸摸事件,你可以在絕大多數現代瀏覽器中來測試這一事件(必須是觸屏設備哦):
touchstart:
觸摸開始的時候觸發
touchmove:
手指在屏幕上滑動的時候觸發
touchend:
觸摸結束的時候觸發
而每個觸摸事件都包括了三個觸摸列表,每個列表里包含了對應的一系列觸摸點(用來實現多點觸控):
touches:
當前位于屏幕上的所有手指的列表。
targetTouches:
位于當前DOM元素上手指的列表。
changedTouches:
涉及當前事件手指的列表。
每個觸摸點由包含了如下觸摸信息(常用):
identifier:
一個數值,唯一標識觸摸會話(touch session)中的當前手指。一般為從0開始的流水號(android4.1,uc)
target:
DOM元素,是動作所針對的目標。
pageX/pageX/clientX/clientY/screenX/screenY:
一個數值,動作在屏幕上發生的位置(page包含滾動距離,client不包含滾動距離,screen則以屏幕為基準)?!?br>
radiusX/radiusY/rotationAngle:
畫出大約相當于手指形狀的橢圓形,分別為橢圓形的兩個半徑和旋轉角度。初步測試瀏覽器不支持,好在功能不常用,歡迎大家反饋。
有了這些信息,我們就可以依據這些事件信息為用戶提供不同的反饋了。
下面,展示一個小demo,用touchmove
實現的單指拖動:
/*單指拖動*/
var obj = document.getElementById('id');
obj.addEventListener('touchmove', function(event) {
// 如果這個元素的位置內只有一個手指的話
if (event.targetTouches.length == 1) {
event.preventDefault();// 阻止瀏覽器默認事件,重要
var touch = event.targetTouches[0];
// 把元素放在手指所在的位置
obj.style.left = touch.pageX-50 + 'px';
obj.style.top = touch.pageY-50 + 'px';
}
}, false);
關于a標簽四個偽類在觸屏設備中的小技巧:
我們都知道a標簽的四個偽類link,visited,active,hover
是專為click
事件設計的,所以在觸屏網站中盡量不要使用它們。經測試大部分也是不可用的。但是這里有一個關于hover
的小技巧,當你點擊過一個按鈕之后,這個按鈕就會一直處于hover
的狀態,此時你基于這個偽類所設置的css
也是起作用的,直到你用手指點擊另外一個按鈕,hover
狀態就會轉移到另一個按鈕。利用這一點,我們可以做出一些小效果。此技巧在大多數瀏覽器中還是可用的。