国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js實現滑動觸屏事件監聽的方法

2024-05-06 16:19:24
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了js實現滑動觸屏事件監聽的方法,適用于手機端觸屏滑動事件的監聽技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了js實現滑動觸屏事件監聽的方法。分享給大家供大家參考。具體實現方法如下:

 

 
  1. function span_move_fun(){ 
  2. var span = document.getElementById("move_k"); 
  3. var span_left = $(span).offset().left; 
  4. var span_top = $(span).offset().top; 
  5. var start_left = $(span).offset().left; 
  6. var start_top = $(span).offset().top; 
  7. span.addEventListener('touchstart'function(event) { 
  8. event.preventDefault(); 
  9. if (event.targetTouches.length == 1) { 
  10. var touch = event.targetTouches[0]; 
  11. span.style.position = "absolute"
  12. span_top = $(this).offset().top; 
  13. span_left = $(this).offset().left; 
  14. start_top = touch.pageY 
  15. start_left = touch.pageX 
  16. var left = parseFloat(touch.pageX - start_left + span_left-30); 
  17. var top = parseFloat(touch.pageY - start_top + span_top-73); 
  18. span.style.left = String(left) + 'px'
  19. span.style.top = String(top) + 'px'
  20. }); 
  21. span.addEventListener('touchmove'function(event) { 
  22. event.preventDefault(); 
  23. if (event.targetTouches.length == 1) { 
  24. var touch = event.targetTouches[0]; 
  25. span.style.position = "absolute"
  26. var left = parseFloat(touch.pageX - start_left + span_left-30); 
  27. var top = parseFloat(touch.pageY - start_top + span_top-73); 
  28. span.style.left = String(left) + 'px'
  29. span.style.top = String(top) + 'px'
  30. }); 
  31. span.addEventListener('touchend'function(event) { 
  32. var touch = event.changedTouches[0]; 
  33. if(parseFloat(touch.pageX - start_left + span_left-30) <= -5 || parseFloat(touch.pageX - start_left + span_left-30) >= 620 || parseFloat(touch.pageY - start_top + span_top-73) <= -38 || parseFloat(touch.pageY - start_top + span_top-73) >= 587){ 
  34. span.style.left = String(span_left-30) + 'px'
  35. span.style.top = String(span_top-73) + 'px'
  36. event.stopPropagation(); 
  37. }); 

js的左右滑動觸屏事件,主要有三個事件:touchstart,touchmove,touchend。這三個事件最重要的屬性是 pageX和 pageY,表示X,Y坐標。

touchstart在觸摸開始時觸發事件

touchend在觸摸結束時觸發事件

touchmove這個事件比較奇怪,按道理在觸摸到過程中不斷激發這個事件才對,但是在我的 Android 1.5 中,在 touchstart 激發后激發一次,然后剩余的都和 touchend 差不多同時激發。

這三個事件都都有一個 timeStamp 的屬性,查看 timeStamp 屬性,可以看到順序是 touchstart -> touchmove ->touchmove -> … -> touchmove ->touchend。

下面是一段代碼實例:

 

 
  1. document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){ 
  2. nStartY = e.targetTouches[0].pageY; 
  3. nStartX = e.targetTouches[0].pageX; 
  4. }); 
  5. document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){ 
  6. nChangY = e.changedTouches[0].pageY; 
  7. nChangX = e.changedTouches[0].pageX; 
  8. }); 

PS:

1. touch事件跟click事件是不會被同時觸發的。現在的移動設備做的比較好,已經把這個問題完美的避免掉了。

2. 注意觸摸的開始和結束位置的位移大小。如果位移小過小應該不做任何動作。

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 平乐县| 余庆县| 全南县| 台山市| 富宁县| 卢氏县| 台北县| 福鼎市| 洛川县| 白山市| 利津县| 筠连县| 甘德县| 景泰县| 巴彦淖尔市| 襄垣县| 黔西| 南召县| 佛学| 本溪市| 班戈县| 句容市| 博湖县| 来安县| 大方县| 延长县| 浪卡子县| 兰溪市| 莆田市| 原平市| 乌拉特前旗| 连南| 克拉玛依市| 莱芜市| 于田县| 始兴县| 邢台县| 寻乌县| 浙江省| 襄汾县| 泰宁县|