中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Tap事件和Tap點透原理

發布時間:2020-07-14 10:14:49 來源:億速云 閱讀:294 作者:Leah 欄目:web開發

今天就跟大家聊聊有關什么是Tap事件和Tap點透原理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

首先介紹tap事件:

  1. tap事件的意義:在移動端,click事件會有300ms延遲,因為瀏覽器通過判斷300ms內是否會繼續點擊,來判斷是否縮放網頁。(即雙擊放大網頁的效果有一個300ms的時間來判斷,300ms過去了,才會觸發click事件)

  2. tap事件的實現:使用瀏覽器默認支持的touch事件來模擬,根據touchstart、touchmove、touchend這三個事件進行模擬tap事件,達到封裝tap事件的效果。下面的代碼是我做的一個簡易的封裝。

//定義tap函數,傳入需要綁定的元素,和一個回調函數
function tap(el,callBack){
    var startTime = 0;
    var maxTime = 250;
    var [startX,startY,endX,endY] = [0,0,0,0]; //es6解構賦值
    el.addEventListener('touchstart',function(e){                            
        console.log('touchstart');
        startTime = Date.now(); //開始觸摸的事件  
        startX = e.touches[0].clientX; //手指在瀏覽器橫坐標
        startY = e.touches[0].clientY; //手指在瀏覽器縱坐標
    })
    el.addEventListener('touchmove',function(e){
        console.log('touchmove');
        endX = e.touches[0].clientX; //手指在瀏覽器橫坐標
        endY = e.touches[0].clientY; //手指在瀏覽器縱坐標
    })
    el.addEventListener('touchend',function(e){
        console.log('touchend');
        if( (Date.now()-startTime) > maxTime){ //如果超過了最大時間,不觸發tap
               console.log('超時了');
            return ; 
        }
        //如果移動距離過大,則不是tap事件。為了大家在電腦上能看到效果,這里設置成了1000,因為在電腦上移動幅度不好控制。如果是在移動端,設置為30就差不多了。
        if(Math.abs(endX-startX) > 1000 || Math.abs(endY-startY) > 1000){
             return;
        }
        callBack(e);
     })
}
tap(document.documentElement,function(e){
    console.log(e);
});

梳理一下:tap事件的順序就是 touchstart -> touchmove -> touchend -> 在touchend中執行回調

tap點透的原理:

  1. 常見到有這種應用場景,點擊遮罩層,遮罩層消失,露出底部的頁面。當底部的頁面中某個元素綁定了click事件,并且點擊遮罩的時候正好點的是該元素的位置,會發現該元素的click事件被觸發了。

  2. click在PC端觸發順序是mousedown -> mousemove -> mouseup -> click這個順序來執行的,在移動端觸發順序是touchstart -> touchmove -> touchend -> click這個順序執行。因為在touchend的時候我們的遮罩已經消失了,所以相當于點擊到了底部頁面中的元素。所以底部元素會觸發click事件。

tap點透的解決方案:

  1. 統一使用tap事件,或者click事件。

  2. 延遲遮罩層消失的時間,使其超過300ms

  3. 拿個透明遮罩擋住(不推薦,太笨了,還麻煩)

  4. 使用fastclick庫

看完上述內容,你們對什么是Tap事件和Tap點透原理有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒲城县| 河北省| 井冈山市| 五峰| 金平| 大足县| 遂溪县| 滨州市| 开原市| 高碑店市| 荃湾区| 武胜县| 玉屏| 湘潭市| 通道| 池州市| 郑州市| 永靖县| 道真| 永济市| 邮箱| 山西省| 武清区| 来安县| 山阴县| 旬阳县| 东乡族自治县| 和田县| 九龙县| 汝南县| 灵川县| 南汇区| 大化| 辰溪县| 清河县| 宝兴县| 永康市| 四子王旗| 八宿县| 洮南市| 集贤县|