幾種普及得比較好的觸摸事件胧沫,你可以在絕大多數(shù)現(xiàn)代瀏覽器中來(lái)測(cè)試這一事件(必須是觸屏設(shè)備哦):
touchstart:
觸摸開(kāi)始的時(shí)候觸發(fā)
touchmove:
手指在屏幕上滑動(dòng)的時(shí)候觸發(fā)
touchend:
觸摸結(jié)束的時(shí)候觸發(fā)
而每個(gè)觸摸事件都包括了三個(gè)觸摸列表熄守,每個(gè)列表里包含了對(duì)應(yīng)的一系列觸摸點(diǎn)(用來(lái)實(shí)現(xiàn)多點(diǎn)觸控):
touches:
當(dāng)前位于屏幕上的所有手指的列表。
targetTouches:
位于當(dāng)前DOM元素上手指的列表友题。
changedTouches:
涉及當(dāng)前事件手指的列表秩铆。
每個(gè)觸摸點(diǎn)由包含了如下觸摸信息(常用):
identifier:
一個(gè)數(shù)值倒庵,唯一標(biāo)識(shí)觸摸會(huì)話(touch session)中的當(dāng)前手指怕午。一般為從0開(kāi)始的流水號(hào)(android4.1陋守,uc)
target:
DOM元素震贵,是動(dòng)作所針對(duì)的目標(biāo)。
pageX/pageX/clientX/clientY/screenX/screenY:
一個(gè)數(shù)值水评,動(dòng)作在屏幕上發(fā)生的位置(page包含滾動(dòng)距離,client不包含滾動(dòng)距離猩系,screen則以屏幕為基準(zhǔn))≈耄
radiusX/radiusY/rotationAngle:
畫(huà)出大約相當(dāng)于手指形狀的橢圓形蝙眶,分別為橢圓形的兩個(gè)半徑和旋轉(zhuǎn)角度。初步測(cè)試瀏覽器不支持褪那,好在功能不常用幽纷,歡迎大家反饋。
有了這些信息博敬,我們就可以依據(jù)這些事件信息為用戶提供不同的反饋了友浸。
下面,展示一個(gè)小demo偏窝,用touchmove
實(shí)現(xiàn)的單指拖動(dòng):
/*單指拖動(dòng)*/
var obj = document.getElementById('id');
obj.addEventListener('touchmove', function(event) {
// 如果這個(gè)元素的位置內(nèi)只有一個(gè)手指的話
if (event.targetTouches.length == 1) {
event.preventDefault();// 阻止瀏覽器默認(rèn)事件收恢,重要
var touch = event.targetTouches[0];
// 把元素放在手指所在的位置
obj.style.left = touch.pageX-50 + 'px';
obj.style.top = touch.pageY-50 + 'px';
}
}, false);
關(guān)于a標(biāo)簽四個(gè)偽類在觸屏設(shè)備中的小技巧:
我們都知道a標(biāo)簽的四個(gè)偽類link武学,visited,active伦意,hover
是專為click
事件設(shè)計(jì)的火窒,所以在觸屏網(wǎng)站中盡量不要使用它們。經(jīng)測(cè)試大部分也是不可用的驮肉。但是這里有一個(gè)關(guān)于hover
的小技巧熏矿,當(dāng)你點(diǎn)擊過(guò)一個(gè)按鈕之后,這個(gè)按鈕就會(huì)一直處于hover
的狀態(tài)离钝,此時(shí)你基于這個(gè)偽類所設(shè)置的css
也是起作用的票编,直到你用手指點(diǎn)擊另外一個(gè)按鈕,hover
狀態(tài)就會(huì)轉(zhuǎn)移到另一個(gè)按鈕卵渴。利用這一點(diǎn)慧域,我們可以做出一些小效果。此技巧在大多數(shù)瀏覽器中還是可用的浪读。