内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

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

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

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新華,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

首先介紹tap事件:

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

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

//定義tap函數(shù),傳入需要綁定的元素,和一個回調(diào)函數(shù)
function tap(el,callBack){
    var startTime = 0;
    var maxTime = 250;
    var [startX,startY,endX,endY] = [0,0,0,0]; //es6解構(gòu)賦值
    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){ //如果超過了最大時間,不觸發(fā)tap
               console.log('超時了');
            return ; 
        }
        //如果移動距離過大,則不是tap事件。為了大家在電腦上能看到效果,這里設(shè)置成了1000,因為在電腦上移動幅度不好控制。如果是在移動端,設(shè)置為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中執(zhí)行回調(diào)

tap點透的原理:

  1. 常見到有這種應(yīng)用場景,點擊遮罩層,遮罩層消失,露出底部的頁面。當(dāng)?shù)撞康捻撁嬷心硞€元素綁定了click事件,并且點擊遮罩的時候正好點的是該元素的位置,會發(fā)現(xiàn)該元素的click事件被觸發(fā)了。

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

tap點透的解決方案:

  1. 統(tǒng)一使用tap事件,或者click事件。

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

  3. 拿個透明遮罩擋?。ú煌扑],太笨了,還麻煩)

  4. 使用fastclick庫

看完上述內(nèi)容,你們對什么是Tap事件和Tap點透原理有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前文章:什么是Tap事件和Tap點透原理
瀏覽地址:http://www.rwnh.cn/article16/ipcgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、ChatGPT、云服務(wù)器網(wǎng)站營銷、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
兰州市| 临海市| 扎赉特旗| 三明市| 徐州市| 永平县| 云和县| 通河县| 长宁县| 桐城市| 缙云县| 邢台市| 响水县| 卢氏县| 西青区| 廊坊市| 浏阳市| 青铜峡市| 临邑县| 灵台县| 双流县| 浑源县| 邻水| 长子县| 兰坪| 报价| 井陉县| 丹东市| 蒙自县| 兴宁市| 清镇市| 叙永县| 土默特右旗| 镇安县| 汶川县| 玉门市| 东安县| 收藏| 卢氏县| 胶南市| 稷山县|