1、創(chuàng)建兩個(gè)html文件,一個(gè)test一個(gè)test2。

創(chuàng)新互聯(lián) - 川西大數(shù)據(jù)中心,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),川西大數(shù)據(jù)中心,西南服務(wù)器托管,四川/成都大帶寬,服務(wù)器機(jī)柜,四川老牌IDC服務(wù)商
2、打開(kāi)test頁(yè)面,在里面創(chuàng)建一個(gè)div,并給其添加onmousedown與move方法。
3、打開(kāi)后我們發(fā)現(xiàn)是一個(gè)棕綠的頁(yè)面。
4、定義兩個(gè)變量,startx為鼠標(biāo)按下的坐標(biāo),endx為鼠標(biāo)移動(dòng)的坐標(biāo)。
5、實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊執(zhí)行的down方法,在里面通過(guò)clientX獲得鼠標(biāo)按下坐標(biāo),并賦值給startx。
6、接著在實(shí)現(xiàn)鼠標(biāo)移動(dòng)的move方法,獲得鼠標(biāo)移動(dòng)的坐標(biāo),并通過(guò)startx與endx相減判斷是否向左邊滑動(dòng)大于30的距離,是的話就切換到test2頁(yè)面。
7、現(xiàn)在我們打開(kāi)test頁(yè)面,向左滑動(dòng)會(huì)提示切換頁(yè)面(這個(gè)可以去除),確定后就切換到了test2頁(yè)面,向右滑動(dòng)切換的方法同理。
實(shí)際上,拿canvas2D繪制,只是把image渲染到 canvas(畫(huà)布上).而實(shí)際的事件,就不能像標(biāo)簽?zāi)敲刺幚?應(yīng)該對(duì)canvas的事件做處理.
實(shí)現(xiàn)邏輯是這樣:
1,添加事件監(jiān)聽(tīng),比如說(shuō),鼠標(biāo)按下 做什么,滑動(dòng) 做什么,彈起做什么.一般鼠標(biāo)事件都是判斷彈起的位置
2,判斷有效坐標(biāo),在事件中判斷坐標(biāo)位置是否在圖片位置,也就是圖片在canvas的位置.
ex:
//some code...
canvas.width=400;
canvas.height=400;
var context2d = canvas.getContext("2d");
var img =new Image();
img.src="xxx/xxx.png";
img.onload=function(){
context2d.drawImage(img,X,Y,WIDTH,HEIGTH);
//X=0,Y=0,W=50,H=50
canvas.addEventListener("mouseup", keyUp, false);
}
function keyUp(evt){
Event_UpX = evt.offsetX;
Event_UpY = evt.offsetY;
if(Event_UpX=繪制坐標(biāo)XEvent_UpX=圖片寬度){
if(Event_UpY=繪制坐標(biāo)YEvent_UpY=圖片高度){
//do something
}
}
}
html5的觸摸操作是通過(guò)觸摸事件實(shí)現(xiàn)的,
touchstart ,touchend,touchover,touchenter,touchcalcl,,
很多js框架都實(shí)現(xiàn)了觸摸支持,使用框架更簡(jiǎn)單一些
左右滑動(dòng)是由觸摸事件定義的,觸摸事件(touch)會(huì)在用戶手指放在屏幕上面的時(shí)候、在屏幕上滑動(dòng)的時(shí)候或者是從屏幕上移開(kāi)的時(shí)候觸發(fā)。下面具體說(shuō)明:
touchstart事件:當(dāng)手指觸摸屏幕時(shí)候觸發(fā),即使已經(jīng)有一個(gè)手指放在屏幕上也會(huì)觸發(fā)。
touchmove事件:當(dāng)手指在屏幕上滑動(dòng)的時(shí)候連續(xù)地觸發(fā)。在這個(gè)事件發(fā)生期間,調(diào)用preventDefault()事件可以阻止?jié)L動(dòng)。
touchend事件:當(dāng)手指從屏幕上離開(kāi)的時(shí)候觸發(fā)。
touchcancel事件:當(dāng)系統(tǒng)停止跟蹤觸摸的時(shí)候觸發(fā)。關(guān)于這個(gè)事件的確切出發(fā)時(shí)間,文檔中并沒(méi)有具體說(shuō)明,咱們只能去猜測(cè)了。
上面的這些事件都會(huì)冒泡,也都可以取消。雖然這些觸摸事件沒(méi)有在DOM規(guī)范中定義,但是它們卻是以兼容DOM的方式實(shí)現(xiàn)的。所以,每個(gè)觸摸事件的event對(duì)象都提供了在鼠標(biāo)實(shí)踐中常見(jiàn)的屬性:bubbles(起泡事件的類型)、cancelable(是否用 preventDefault() 方法可以取消與事件關(guān)聯(lián)的默認(rèn)動(dòng)作)、clientX(返回當(dāng)事件被觸發(fā)時(shí),鼠標(biāo)指針的水平坐標(biāo))、clientY(返回當(dāng)事件觸發(fā)時(shí),鼠標(biāo)指針的垂直坐標(biāo))、screenX(當(dāng)某個(gè)事件被觸發(fā)時(shí),鼠標(biāo)指針的水平坐標(biāo))和screenY(返回當(dāng)某個(gè)事件被觸發(fā)時(shí),鼠標(biāo)指針的垂直坐標(biāo))。除了常見(jiàn)的DOM屬性,觸摸事件還包含下面三個(gè)用于跟蹤觸摸的屬性。
touches:表示當(dāng)前跟蹤的觸摸操作的touch對(duì)象的數(shù)組。
targetTouches:特定于事件目標(biāo)的Touch對(duì)象的數(shù)組。
changeTouches:表示自上次觸摸以來(lái)發(fā)生了什么改變的Touch對(duì)象的數(shù)組。
每個(gè)Touch對(duì)象包含的屬性如下。
clientX:觸摸目標(biāo)在視口中的x坐標(biāo)。
clientY:觸摸目標(biāo)在視口中的y坐標(biāo)。
identifier:標(biāo)識(shí)觸摸的唯一ID。
pageX:觸摸目標(biāo)在頁(yè)面中的x坐標(biāo)。
pageY:觸摸目標(biāo)在頁(yè)面中的y坐標(biāo)。
screenX:觸摸目標(biāo)在屏幕中的x坐標(biāo)。
screenY:觸摸目標(biāo)在屏幕中的y坐標(biāo)。
target:觸目的DOM節(jié)點(diǎn)目標(biāo)。
舉個(gè)例子-JavaScript代碼:
function?load?(){
document.addEventListener('touchstart',touch,?false);
document.addEventListener('touchmove',touch,?false);
document.addEventListener('touchend',touch,?false);
function?touch?(event){
var?event?=?event?||?window.event;
var?oInp?=?document.getElementById("inp");
switch(event.type){
case?"touchstart":
oInp.innerHTML?=?"Touch?started?("?+?event.touches[0].clientX?+?","?+?event.touches[0].clientY?+?")";
break;
case?"touchend":
oInp.innerHTML?=?"brTouch?end?("?+?event.changedTouches[0].clientX?+?","?+?event.changedTouches[0].clientY?+?")";
break;
case?"touchmove":
event.preventDefault();
oInp.innerHTML?=?"brTouch?moved?("?+?event.touches[0].clientX?+?","?+?event.touches[0].clientY?+?")";
break;
}
}
}
window.addEventListener('load',load,?false);
HTML代碼:
div?id="inp"/div
上面的小例子當(dāng)touchstart事件觸發(fā)的時(shí)候,會(huì)將觸摸的位置更新到div標(biāo)簽中。當(dāng)touchmove事件觸發(fā)的時(shí)候,會(huì)默認(rèn)行為的滾動(dòng)
(觸摸移動(dòng)的默認(rèn)行為是滾動(dòng)頁(yè)面),然后觸摸操作的變化信息更新到div標(biāo)簽中。而touchend事件會(huì)輸出有關(guān)觸摸操作的最終信息。注意,在
touchend事件觸發(fā)的時(shí)候,touches集合中就沒(méi)有任何Touch對(duì)象了,因?yàn)椴淮嬖诨顒?dòng)的觸摸操作。
這些事件會(huì)在文檔的所有元素上面觸發(fā),因而可以分別操作頁(yè)面的不同部分。在觸摸屏幕上的元素,這些事件(包括鼠標(biāo)事件)發(fā)生的順序如下:
(1)touchstart
(2)mouseover
(3)mousemove(一次)
(4)mousedown
(5)mouseup
(6)click
(7)touchend
網(wǎng)頁(yè)標(biāo)題:html5滑動(dòng)事件的簡(jiǎn)單介紹
文章地址:http://chinadenli.net/article15/dsededi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)、域名注冊(cè)、App開(kāi)發(fā)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)