觸摸事件canvas
只有觸摸屏纔會引起這一類事件數組
觸摸事件 和 鼠標事件 同時觸發,即便這個時候並無用到鼠標。瀏覽器
這是爲了讓那些只定義鼠標事件、沒有定義觸摸事件的代碼,在觸摸屏的狀況下仍然能用。ide
若是想避免這種狀況,能夠用 event.preventDefault 方法阻止發出鼠標事件函數
Touch 一個觸摸點spa
TouchList 多個觸摸點的集合code
TouchEvent 觸摸引起的事件實例orm
identifier 必需 整數 觸摸點的惟一 ID。
target 必需 元素節點 觸摸點開始時所在的網頁元素。
clientX 可選 數值 觸摸點相對於瀏覽器窗口左上角的水平距離,默認爲0。
clientY 可選 數值 觸摸點相對於瀏覽器窗口左上角的垂直距離,默認爲0。
screenX 可選 數值 觸摸點相對於屏幕左上角的水平距離,默認爲0。
screenY 可選 數值 觸摸點相對於屏幕左上角的垂直距離,默認爲0。
pageX 可選 數值 觸摸點相對於網頁左上角的水平位置(即包括頁面的滾動距離),默認爲0。
pageY 可選 數值 觸摸點相對於網頁左上角的垂直位置(即包括頁面的滾動距離),默認爲0。
radiusX 可選 數值 觸摸點周圍受到影響的橢圓範圍的 X 軸半徑,默認爲0。
radiusY 可選 數值 觸摸點周圍受到影響的橢圓範圍的 Y 軸半徑,默認爲0。
rotationAngle 可選 數值 觸摸區域的橢圓的旋轉角度,單位爲度數,在0到90度之間,默認值爲0。
force 可選 數值 範圍在0到1之間 表示觸摸壓力 0表明沒有壓力,1表明硬件所能識別的最大壓力,默認爲 0對象
touch.identifier blog
返回一個整數,表示觸摸點的惟一 ID。
這個值在整個觸摸過程保持不變,直到觸摸事件結束。
touch.force
返回一個0到1之間的數值,表示觸摸壓力。
0表明沒有壓力,1表明硬件所能識別的最大壓力。
touch.target
返回一個元素節點,表明觸摸發生時所在的那個元素節點。
即便觸摸點已經離開了這個節點,該屬性依然不變。
touch.screenX,touch.screenY
至關於屏幕左上角
touch.clientX,touch.clientY
至關於瀏覽器窗口左上角
touch.pageX,touch.pageY
至關於整個網頁左上角
touch.radiusX,touch.radiusY
返回觸摸點周圍受到影響的橢圓範圍的 X 軸半徑和 Y 軸半徑,單位爲像素。
乘以 2 就能夠獲得觸摸範圍的寬度和高度
touch.rotationAngle
表示觸摸區域的橢圓的旋轉角度,單位爲度數,在0到90度之間
div.addEventListener('touchstart', rotate); div.addEventListener('touchmove', rotate); div.addEventListener('touchend', rotate); function rotate(e) { var touch = e.changedTouches.item(0); e.preventDefault(); src.style.width = touch.radiusX * 2 + 'px'; src.style.height = touch.radiusY * 2 + 'px'; src.style.transform = 'rotate(' + touch.rotationAngle + 'deg)'; };
表示一組觸摸點的集合。表示全部觸摸點
它的實例是一個相似數組的對象,成員是 Touch 的實例對象
用戶用三根手指觸摸,產生的 TouchList 實例就會包含三個成員,每根手指的觸摸點對應一個 Touch 實例對象
主要經過觸摸事件的 event.touches、event.changedTouches、event.targetTouches 這幾個屬性獲取
event.touches.length
觸摸點的數量
event.touches.item() 指定位置的成員,它的參數是該成員的位置編號(從零開始)
event.touches.item(0); 等同於 event.touches[0];
var touchEvent = new TouchEvent(type, options);
第一個參數 是字符串,表示事件類型;
第二個參數是事件的配置對象,該參數是可選的,對象的全部屬性也是可選的。
除了 Event 接口的配置屬性,該接口還有一些本身的配置屬性。
touches TouchList 實例 表明屏幕上全部的的手指列表,默認值是一個空數組[]。
targetTouches TouchList 實例 表明全部處在目標元素上的手指列表,默認值是一個空數組[]。
changedTouches TouchList 實例 表明全部處目標元素 目標事件 上的手指列表 ,默認值是一個空數組[]。
ctrlKey 布爾值 表示 Ctrl 鍵是否同時按下,默認值爲false。
shiftKey 布爾值 表示 Shift 鍵是否同時按下,默認值爲false。
altKey 布爾值 表示 Alt 鍵是否同時按下,默認值爲false。
metaKey 布爾值 表示 Meta 鍵(或 Windows 鍵)是否同時按下,默認值爲false。
touchstart
用戶開始觸摸時觸發,它的target屬性返回發生觸摸的元素節點。
touchend
用戶再也不接觸觸摸屏時(或者移出屏幕邊緣時)觸發
它的 target 屬性 與 touchstart 事件一致的,就是開始觸摸時所在的元素節點。
它的 changedTouches 屬性返回一個 TouchList 實例,包含全部再也不觸摸的觸摸點(即 Touch 實例對象)。
touchmove
用戶移動觸摸點時觸發,
它的 target 屬性 與 touchstart 事件一致。
若是觸摸的半徑、角度、力度發生變化,也會觸發該事件。
touchcancel
觸摸點取消時觸發
好比在觸摸區域跳出一個模態窗口(modal window)、
觸摸點離開了文檔區域(進入瀏覽器菜單欄)、
用戶的觸摸點太多,超過了支持的上限(自動取消早先的觸摸點)。
var el = document.getElementsByTagName('canvas')[0]; el.addEventListener('touchstart', handleStart, false); el.addEventListener('touchmove', handleMove, false); function handleStart(evt) { evt.preventDefault(); var touches = evt.changedTouches; for (var i = 0; i < touches.length; i++) { console.log(touches[i].pageX, touches[i].pageY); }; }; function handleMove(evt) { evt.preventDefault(); var touches = evt.changedTouches; for (var i = 0; i < touches.length; i++) { var touch = touches[i]; console.log(touch.pageX, touch.pageY); }; };