国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

H5觸摸事件判斷滑動方向

hersion / 2022人閱讀

摘要:可以通過檢查觸摸事件的屬性來確定當前事件屬于哪種類型當用戶在觸摸平面上放置了一個觸點時觸發(fā)。判斷滑動方向基本原理就是記錄開始滑動和結束滑動的坐標位置,然后進行相對位置的計算。

為了給觸摸界面提供有力支持, 觸摸事件提供了響應用戶對觸摸屏或者觸摸板上操作的能力.

接口 TouchEvent

TouchEvent 是一類描述手指在觸摸平面(觸摸屏、觸摸板等)的狀態(tài)變化的事件。這類事件用于描述一個或多個觸點,使開發(fā)者可以檢測觸點的移動,觸點的增加和減少,等等。每 個 Touch 對象代表一個觸點; 每個觸點都由其位置,大小,形狀,壓力大小,和目標 element 描述。 TouchList 對象代表多個觸點的一個列表.

觸摸事件的類型

為了區(qū)別觸摸相關的狀態(tài)改變,存在多種類型的觸摸事件。可以通過檢查觸摸事件的 TouchEvent.type 屬性來確定當前事件屬于哪種類型

touchstart:當用戶在觸摸平面上放置了一個觸點時觸發(fā)。

touchend:當一個觸點被用戶從觸摸平面上移除(當用戶將一個手指離開觸摸平面)時觸發(fā)。

touchmove:當用戶在觸摸平面上移動觸點時觸發(fā)。

touchcancel:當觸點由于某些原因被中斷時觸發(fā)。

判斷滑動方向

基本原理就是記錄開始滑動(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




  
  菜鳥教程(runoob.com)
  


HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

HEllo word

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107941.html

相關文章

  • 微信里面防止下拉"露底"組件

    摘要:從本人這兩個月移動實踐的經驗來看,微信的里面和的滑動效果無論是在安卓還是下的體驗都很一般,有明顯的卡頓現象,在安卓下面還會出現滑動過快的時候在頁面停下來之后滾動條才閃到相應位置的現象。 前言 在微信里面瀏覽頁面的時候,有一個很管用的方法可以區(qū)分這個頁面是原生的還是H5形式的。隨便打開一個頁面,用力往下扯的時候,如果頁面上方出現了黑底,黑底上有一行諸如網頁由game.weixin.qq....

    hot_pot_Leo 評論0 收藏0
  • 移動端手勢庫設計與實踐

    摘要:前言本次給大家分享的是常見的移動端單點觸摸事件的設計思路及實踐。實現即手指滑動事件,應用場景如輪播圖左右滑動切換,整屏頁面滑動翻頁等,算是移動端最常見的手勢之一了。 前言 本次給大家分享的是常見的移動端單點觸摸事件的設計思路及實踐。 核心技術 主要就是利用移動端的以下3個觸摸事件,來模擬和實現自定義的手勢操作 touchstart:手指觸摸到屏幕的一瞬間觸發(fā) touchmove:手指...

    wudengzan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<