簡介
hammer.js是一個多點觸摸手勢庫韧骗,能夠為網(wǎng)頁添加多點觸摸事件市栗,免去自己監(jiān)聽底層touchstart孙蒙、touchmove递雀、touchend事件柄延。hammer.js不但支持觸摸事件的瀏覽器,在桌面瀏覽器也能將鼠標(biāo)點擊事件當(dāng)做觸摸,方便開發(fā)人員進行調(diào)試搜吧。
特點
不需要依賴任何其他的框架市俊,并且整個框架非常小。
事件架構(gòu)
hammer.js主要對觸屏的六大事件進行監(jiān)聽滤奈。
1.
pan
事件:在指定的dom區(qū)域內(nèi)摆昧,一個手指放下并移動時間,即觸屏中的拖動事件蜒程。這個事件在觸屏中比較常用绅你。該事件還可以對以下事件進行監(jiān)聽并處理:
panstart
拖動開始、panmove
拖動過程昭躺、panend
拖動結(jié)束忌锯、pancancel
拖動取消、panleft
向左拖動领炫、panright
向右拖動偶垮、panup
向上拖動、pandown
向下拖動帝洪。
2.pinch
事件:在指定區(qū)域內(nèi)兩個手指(默認)或多個手指相對移動(越來越近)或相對移動(越來越遠)事件似舵。該事件分別對以下事件進行監(jiān)聽:
pinchstart
多點觸控開始、pinchmove
多點觸控過程葱峡、pinchend
多點觸控結(jié)束砚哗、pinchcancel
多點觸控取消诬烹、pinchin
多點觸控手指靠近妇拯、pinchout
多點觸控手指越來越遠。
3.press
事件:在指定的dom區(qū)域內(nèi)按壓步悠,該事件不能包含移動脆淹,最小按壓時間為500毫秒
常空。常用于手機上的“復(fù)制、粘貼”等功能盖溺。該事件對以下事件進行監(jiān)聽處理:
pressup
按壓事件離開時觸發(fā)
4.rotate
事件:在指定的dom區(qū)域內(nèi),當(dāng)兩個手指或更多手指呈圓形旋轉(zhuǎn)
的時候觸發(fā)铣缠。該事件對以下事件進行監(jiān)聽:
rotatestart
旋轉(zhuǎn)開始烘嘱、rotatemove
旋轉(zhuǎn)過程、rotateend
旋轉(zhuǎn)結(jié)束蝗蛙、rotatecancel
旋轉(zhuǎn)取消蝇庭。
5.swipe
事件:一個手指在屏幕上滑動,即滑動事件捡硅。該事件對以下事件進行監(jiān)聽:
Swipeleft
:向左滑動哮内、Swiperight
:向右滑動、Swipeup
:向上滑動、Swipedown
:向下滑動北发。
6.tap
事件:在指定dom事件區(qū)域內(nèi)纹因,一個手指輕拍或點擊時觸發(fā)該事件(類似PC端的click)。該事件最大點擊時間為250毫秒
琳拨,如果超過250毫秒則按Press
事件進行處理瞭恰。
注意點
tap
和click
在安卓系統(tǒng)上可以同時觸發(fā),但click
事件會有幾百毫秒的延遲判斷是否是點擊事件狱庇,即tap
事件先觸發(fā)惊畏,過一段時間在觸發(fā)click
事件。
使用方法
<script>
//創(chuàng)建一個新的hammer對象并且在初始化時密任,指定要處理的dom元素
var hammertime=new Hammer(document.getElementById('test'))
//為該dom元素添加指定的事件颜启,如觸屏移動事件
hammertime.on('pan',function(e){
console.log(e)
})
</script>
rotate
,pinch
需要手動添加事件監(jiān)聽程序。
//如
var hammertime = new Hammer(document.getElementById("test"));
hammertime.add(new Hammer.rotate());
hammertime.on("rotate",function(){.......})