ホームページ > ウェブフロントエンド > H5 チュートリアル > スライド方向を決定するhtml5タッチイベントの実装

スライド方向を決定するhtml5タッチイベントの実装

不言
リリース: 2018-06-05 16:45:56
オリジナル
2505 人が閲覧しました

この記事は、スライド方向を決定するための html5 タッチイベントの実装に関する関連情報を主に紹介しています。編集者が非常に優れていると考えたので、参考として共有します。

タッチ インターフェイスを強力にサポートするために、タッチ イベントは、タッチ スクリーンまたはタッチ パッドでのユーザー操作に応答する機能を提供します。


TouchEvent

TouchEvent は、タッチ表面 (タッチ スクリーン、タッチ パッドなど) の状態変化イベントにおける指の動きを説明します。このタイプのイベントは 1 つ以上のタッチ ポイントを記述するために使用され、開発者がタッチ ポイントの移動、タッチ ポイントの増減などを検出できるようにします。各 Touch オブジェクトはタッチ ポイントを表し、各タッチ ポイントはその位置、サイズ、形状、圧力レベル、およびターゲット要素によって記述されます。 TouchList オブジェクトは、複数のタッチ ポイントのリストを表します。

タッチ イベントの種類

タッチに関連した状態変化を区別するために、複数の種類のタッチ イベントが存在します。現在のイベントのタイプは、タッチ イベントの TouchEvent.type プロパティを確認することで判断できます。

touchstart: ユーザーがタッチ サーフェスにタッチ ポイントを置いたときに発生します。

  1. touchend: ユーザーによってタッチ ポイントがタッチ表面から削除されたとき (ユーザーがタッチ表面から指を離したとき) にトリガーされます。

  2. touchmove: ユーザーがタッチ面上でタッチポイントを移動するとトリガーされます。

  3. touchcancel: 何らかの理由で連絡が中断されたときにトリガーされます。

  4. スライド方向を決定する

基本原理は、スライド開始(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 を使用してビューのスライド方向を決定することもできます。コードは次のとおりです (直接実行できます)。 ):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>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>HEllo word</h1>
<h1>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 は

HTML5 Canvas を使用してテキストの配置を実現します メソッドの概要



以上がスライド方向を決定するhtml5タッチイベントの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート