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

首頁 > 編程 > JavaScript > 正文

淺談移動端之js touch事件 手勢滑動事件

2019-11-19 19:02:49
字體:
來源:轉載
供稿:網友

現分享一篇關于touch的文章,望指教!

原理:

當開始一個touchstart事件的時候,獲取此刻手指的橫坐標startX和縱坐標startY;
當觸發touchmove事件時,在獲取此時手指的橫坐標moveEndX和縱坐標moveEndY;最后,通過這兩次獲取的坐標差值來判斷手指在手機屏幕上的滑動方向。
具體代碼如下:

$("body").on("touchstart", function(e) { e.preventDefault(); startX = e.originalEvent.changedTouches[0].pageX, startY = e.originalEvent.changedTouches[0].pageY;});$("body").on("touchmove", function(e) { e.preventDefault(); moveEndX = e.originalEvent.changedTouches[0].pageX, moveEndY = e.originalEvent.changedTouches[0].pageY, X = moveEndX - startX, Y = moveEndY - startY;  if ( X > 0 ) {  alert("left 2 right"); } else if ( X < 0 ) {  alert("right 2 left"); } else if ( Y > 0) {  alert("top 2 bottom"); } else if ( Y < 0 ) {  alert("bottom 2 top"); } else{  alert("just touch"); }});


總結:touchmove的最后坐標減去touchstart的起始坐標。

X的結果如果正數,則說明手指是從左往右劃動;
X的結果如果負數,則說明手指是從右往左劃動;
Y的結果如果正數,則說明手指是從上往下劃動;
Y的結果如果負數,則說明手指是從下往上劃動。
坑開始了……
理想很豐滿,顯示很骨感!在實際的操作中,手指的上下滑動很難做到直上直下,只要稍微有點斜,只要稍微有點斜,就會被X軸的判斷先行接管,而與我們實際的操作意愿相背離。此時就需要添加特殊的判斷技巧,代碼如下:

$("body").on("touchstart", function(e) { e.preventDefault(); startX = e.originalEvent.changedTouches[0].pageX, startY = e.originalEvent.changedTouches[0].pageY;});$("body").on("touchmove", function(e) { e.preventDefault(); moveEndX = e.originalEvent.changedTouches[0].pageX, moveEndY = e.originalEvent.changedTouches[0].pageY, X = moveEndX - startX, Y = moveEndY - startY;   if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {  alert("left 2 right"); } else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {  alert("right 2 left"); } else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {  alert("top 2 bottom"); } else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {  alert("bottom 2 top"); } else{  alert("just touch"); }});

以上代碼,在測試時仍不能達到預期的效果,此時要注意到一個事實--$('body').height = 0(此處是個大坑,但有時也不會出現,望大神指教)
故還應該在此基礎上添加一下代碼:

var windowHeight = $(window).height(),   $body = $("body");  // console.log($(window).height());  // console.log($('body').height());  $body.css("height", windowHeight);

 到此,已實現了手機移動端手指的上滑、下滑、左滑和右滑操作。

一些淺顯的理解,望大神指教鞭策!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临邑县| 屏山县| 溧水县| 柏乡县| 平利县| 萨迦县| 华容县| 芮城县| 梅州市| 瑞丽市| 镇原县| 保康县| 呈贡县| 同仁县| 灯塔市| 西藏| 太保市| 文山县| 罗山县| 海丰县| 乐都县| 邵武市| 明星| 南康市| 宜昌市| 廉江市| 永仁县| 九龙坡区| 容城县| 含山县| 宁波市| 莱芜市| 金门县| 邢台县| 衡阳市| 赣榆县| 延庆县| 文昌市| 台北市| 武乡县| 黔南|