搜尋
首頁web前端H5教程html5觸控事件判斷滑動方向的實現

這篇文章主要介紹了html5觸摸事件判斷滑動方向的實現的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。

為了給觸控介面提供強大支援, 觸控事件提供了回應使用者對觸控螢幕或觸控板上操作的能力.

##介面

#TouchEvent

TouchEvent 是一類描述手指在觸控平面(觸控螢幕、觸控板等)的狀態變化的事件。這類事件用於描述一個或多個觸點,使開發者可以偵測觸點的移動,觸點的增加和減少,等等。每 個 Touch 物件代表一個接點; 每個觸點都由其位置,大小,形狀,壓力大小,和目標 element 描述。 TouchList 物件代表多個觸點的一個清單.

觸控事件的類型

為了區別觸摸相關的狀態改變,存在多種類型的觸摸事件。可以透過檢查觸控事件的 TouchEvent.type 屬性來確定目前事件屬於哪種類型

  1. touchstart:當使用者在觸控平面上放置了一個觸點時觸發。

  2. touchend:當一個觸點被使用者從觸控平面上移除(當使用者將一個手指離開觸控平面)時觸發。

  3. touchmove:當使用者在觸控平面上移動觸點時觸發。

  4. touchcancel:當觸點因某些原因中斷時觸發。

判斷滑動方向

#基本原理就是記錄開始滑動(touchStart)和結束滑動(touchEnd)的座標位置,然後進行相對位置的計算。

touchStart:function(e){
    startX = e.touches[0].pageX;
    startY = e.touches[0].pageY;
    e = e || window.event;
 },
touchEnd:function(e){
    const that = this;
    endX = e.changedTouches[0].pageX;
    endY = e.changedTouches[0].pageY;
    that.upOrDown(startX,startY,endX,endY);
},
upOrDown:function (startX, startY, endX, endY) {
    const that = this;
    let direction = that.GetSlideDirection(startX, startY, endX, endY);
    switch(direction) {
      case 0:
        console.log("没滑动");
        break;
      case 1:
        console.log("向上");
        break;
      case 2:
        console.log("向下");
        break;
      case 3:
        console.log("向左");
        break;
      case 4:
        console.log("向右");
        break;
      default:
        break;
    }
  },
//根据起点和终点返回方向 1:向上,2:向下,3:向左,4:向右,0:未滑动
  GetSlideDirection:function (startX, startY, endX, endY) {
    const that = this;
    let dy = startY - endY;
    let dx = endX - startX;
    let result = 0;
    //如果滑动距离太短
    if(Math.abs(dx) < 2 && Math.abs(dy) < 2) {
      return result;
    }
    let angle = that.GetSlideAngle(dx, dy);
    if(angle >= -45 && angle < 45) {
      result = 4;
    }else if (angle >= 45 && angle < 135) {
      result = 1;
    }else if (angle >= -135 && angle < -45) {
      result = 2;
    }
    else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
      result = 3;
    }
    return result;
  },
  //返回角度
  GetSlideAngle:function (dx, dy) {
    return Math.atan2(dy, dx) * 180 / Math.PI;
  }

原生JS方法

除了H5新增的方法外,還可以用原生JS判斷view的滑動方向,程式碼如下(可直接運作):

要注意的是chrome對document.body.scrollTop一直是0,需要改成document.documentElement.scrollTop

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title> 脚本之家(jb51.net)</title>
  <style>
    p {
      border: 1px solid black;
      width: 200px;
      height: 100px;
      overflow: scroll;
    }
  </style>
</head>
<body style="overflow: scroll">
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<h1 id="HEllo-nbsp-word">HEllo word</h1>
<script>
  function scroll( fn ) {
    var beforeScrollTop = document.documentElement.scrollTop,
      fn = fn || function() {};
    console.log(&#39;beforeScrollTop&#39;,beforeScrollTop);
    window.addEventListener("scroll", function() {
      var afterScrollTop = document.documentElement.scrollTop,
        delta = afterScrollTop - beforeScrollTop;
      console.log(&#39;beforeScrollTop&#39;,beforeScrollTop);
      console.log(&#39;afterScrollTop&#39;,afterScrollTop);
      if( delta === 0 ) return false;
      fn( delta > 0 ? "down" : "up" );
      beforeScrollTop = afterScrollTop;
    }, false);
  }

  scroll(function(direction) { console.log(direction) });
</script>

</body>
</html>

相關推薦:


HTML5中的強制下載屬性download使用

HTML5 Canvas實作文字對齊的方法總結


#

以上是html5觸控事件判斷滑動方向的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML5特徵:H5的核心HTML5特徵:H5的核心May 04, 2025 am 12:05 AM

HTML5的核心特性包括語義化標籤、多媒體支持、表單增強和離線存儲與本地存儲。 1.語義化標籤如、等提高了代碼可讀性和SEO效果。 2.多媒體支持通過和標籤簡化了嵌入媒體內容的過程。 3.表單增強引入了新的輸入類型和驗證屬性,簡化了表單開發。 4.離線存儲和本地存儲通過ApplicationCache和localStorage等提高了網頁性能和用戶體驗。

H5:探索最新版本的HTMLH5:探索最新版本的HTMLMay 03, 2025 am 12:14 AM

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

超越基礎:H5代碼中的高級技術超越基礎:H5代碼中的高級技術May 02, 2025 am 12:03 AM

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5:網絡內容和設計的未來H5:網絡內容和設計的未來May 01, 2025 am 12:12 AM

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5:網絡開發的新功能和功能H5:網絡開發的新功能和功能Apr 29, 2025 am 12:07 AM

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

H5:HTML5的關鍵改進H5:HTML5的關鍵改進Apr 28, 2025 am 12:26 AM

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5:標準及其對Web開發的影響HTML5:標準及其對Web開發的影響Apr 27, 2025 am 12:12 AM

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5代碼示例:實際應用和教程H5代碼示例:實際應用和教程Apr 25, 2025 am 12:10 AM

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。