標籤:vertica htm number data art example move 對象 asc
一、引入hammer.JS
1.:http://download.csdn.net/detail/webxiaoma/9872249
2.官網地址:http://hammerjs.github.io/examples/
3.CDN連結:http://hammerjs.github.io/dist/hammer.min.js
二、用法
1.首先我們先寫一個出發事件的DOM元素
HTML:
<style type="text/css"> html, body { width: 100%; height: 100%; margin: 0px; padding: 0px; } .test { width: 100%; height: 100%; background: red; text-align: left; color:white; } </style> <div id="test" class="test"></div>
2.我們建立一個新的hammer對象並且在初始化時指定要處理的dom元素
var hammertime = new Hammer(document.getElementById("test"));
3.為該dom元素指定觸屏移動事件
hammertime.on("press", function (e) { document.getElementById("result").innerHTML += "按壓超過500ms了";});
三、注意點
重點內容
1.推薦使用視口元標記,通過禁用雙引號/縮小縮放功能,可以更好地控制網頁。
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
2.水平 pan和swipe和多點觸控pinch和rotate識別。預設情況下,壓縮和旋轉辨識器將被禁用,因為它們會使元素阻塞,但您可以通過調用以下方式啟用它們:
①方法一:
hammertime.add(new Hammer.Pinch()); hammertime.add(new Hammer.Rotate());
②方法二:
hammertime.get(‘pinch‘).set({ enable: true });hammertime.get(‘rotate‘).set({ enable: true });//啟用pan和swipe辨識器的垂直方向或全方向:hammertime.get(‘pan‘).set({ direction: Hammer.DIRECTION_ALL });hammertime.get(‘swipe‘).set({ direction: Hammer.DIRECTION_VERTICAL });
啟用成功後在去調用該事件,否則該事件可能不會觸發。
另外我們也可以使用 remove(事件)
移除某個事件
hammertime.remove(‘rotate‘); // 移除旋轉手勢事件
四、提供的事件
1、點擊事件(也就是常說的tocuh事件)
選項 |
預設 |
描述 |
event |
pan |
事件名稱 |
pointers |
1 |
必需指標。0為所有指標。 |
threshold |
10 |
識別前需要的最小平移距離 |
direction |
DIRECTION_ALL |
平移方向。 |
panstart 單手指按下時事件
panmove 單手指移動時事件
panend 單手指離開時事件
pancancel 手勢事件被移除是觸發
panleft 單手指向下左滑動時觸發
panright 單手指向右滑動時觸發
panup 單手指向上滑動時觸發
pandown 單手指向下滑動時觸發
2.縮放事件 (需要手動開啟 ammertime.get(‘pinch‘).set({ enable: true });
)
選項 |
預設 |
描述 |
event |
pinch |
事件名稱 |
pointers |
2 |
必需的指標,最小為2。 |
threshold |
0 |
識別前的最小比例 |
pinch 手指縮放觸發
pinchstart 手指縮放開始時觸發
pinchmove 手指縮放時觸發
pinchend 手指縮放結束後觸發
pinchcancel 手指縮放事件被清除時觸發
pinchin 手指向內縮放時觸發
pinchout 手指向外縮放時觸發
3.按壓(長按)事件
選項 |
預設 |
描述 |
event |
press |
事件名稱 |
pointers |
1 |
必需指標。0為所有指標。 |
threshold |
9 |
按壓時允許的最小移動。 |
time |
251 |
壓縮時間以毫秒為單位 |
press 手指按壓時觸發(預設按壓251毫秒)
pressup 手指按壓結束時觸發
4.旋轉事件 (兩個手指)
選項 |
預設 |
描述 |
event |
rotate |
事件名稱 |
pointers |
2 |
必需的指標,最小為2。 |
threshold |
0 |
識別前的最小比例 |
rotate 旋轉觸發
rotatestart 旋轉開始時觸發
rotatemove 旋轉時觸發
rotateend 旋轉結束時觸發
rotatecancel 旋轉被移除時觸發
5.滑屏事件
選項 |
預設 |
描述 |
event |
rotate |
事件名稱 |
pointers |
1 |
必需的指標,最小為2。 |
threshold |
10 |
識別前需要的最小距離。 |
direction |
DIRECTION_ALL |
平移方向。 |
velocity |
0.3 |
識別之前所需的最小速度,單位為px / ms。 |
swipe 滑屏觸發
swipeleft 左滑屏時觸發
swiperight 右滑屏時觸發
swipeup 上滑屏時觸發
swipedown 下滑屏時觸發
小提示:當調用Hammer()建立一個簡單的執行個體時,平移和滑動辨識器被配置為僅檢測水平手勢。你需要這樣去在垂直方向去配置:
hammertime.get(‘swipe‘).set({ direction: Hammer.DIRECTION_ALL });
6.tap點擊事件
選項 |
預設 |
描述 |
event |
tap |
事件名稱 |
pointers |
1 |
必需的指標 |
taps |
1 |
所需的水龍頭數量。 |
interval |
300 |
多個水龍頭之間的最大時間(以ms為單位) |
time |
250 |
最大按壓時間(ms)。 |
threshold |
2 |
在做點擊時,允許一些小動作。 |
posThreshold |
10 |
多個抽頭之間的最大位置差異。 |
tap 點擊事件
doubletap 雙擊觸發
重點內容
以上事件中我們可以改變事件的預設狀態,比如按壓事件預設是251毫秒觸發,我們可以改為1s後觸發。
hammertime.get(‘press‘).set({ time:1000 });
五、事件對象
每個事件都存在事件對象:
hammertime.on("doubletap", function (e) { document.getElementById("result").innerHTML += e; var a = console.log(e);});
事件對象中包含以下資訊:
Hammer觸發的所有事件都會接收到包含以下屬性的事件對象。
名稱 |
值 |
type |
事件名稱 像panstart。 |
deltaX |
X軸的移動。 |
deltaY |
Y軸運動。 |
deltaTime |
自第一次輸入以來的總時間(毫秒)。 |
distance |
距離移動 |
angle |
角度移動。 |
velocityX |
速度在X軸上,以px / ms為單位。 |
velocityY |
Y軸上的速度,以px / ms為單位 |
velocity |
Y軸上的速度,以px / ms為單位 |
direction |
方向移動。匹配DIRECTION常數。 |
offsetDirection |
方向從起點移開。匹配DIRECTION常數。 |
scale |
多點觸控時縮放。1單觸。 |
rotation |
多點觸摸時已經完成的旋轉(deg)。0單擊。 |
center |
多點觸摸的中心位置,或只是單指標。 |
srcEvent |
源事件對象,類型TouchEvent,MouseEvent或PointerEvent。 |
target |
接收到事件的目標。 |
pointerType |
主指標類型,可以是touch,mouse,pen或kinect。 |
eventType |
事件類型,匹配INPUT常量。 |
isFirst |
true 當第一個輸入。 |
isFinal |
true 當最後(最後)輸入。 |
pointers |
具有所有指標的數組,包括結束指標(touchend,mouseup)。 |
changedPointers |
具有所有新/移動/丟失指標的數組。 |
preventDefault |
參考srcEvent.preventDefault()方法。只有專家! |
移動端手勢事件 hammer.JS外掛程式