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

資訊專(zhuān)欄INFORMATION COLUMN

移動(dòng)端-點(diǎn)透的解決方法

cpupro / 2464人閱讀

摘要:移動(dòng)端經(jīng)常出現(xiàn)點(diǎn)透,至于怎么出現(xiàn)的請(qǐng)大家去看一下實(shí)現(xiàn)的源碼。點(diǎn)透是什么你可能碰到過(guò)在列表頁(yè)面上創(chuàng)建一個(gè)彈出層,彈出層有個(gè)關(guān)閉的按鈕,你點(diǎn)了這個(gè)按鈕關(guān)閉彈出層后后,這個(gè)按鈕正下方的內(nèi)容也會(huì)執(zhí)行點(diǎn)擊事件或打開(kāi)鏈接。這個(gè)被定義為這是一個(gè)點(diǎn)透現(xiàn)象。

移動(dòng)端經(jīng)常出現(xiàn)點(diǎn)透,至于怎么出現(xiàn)的請(qǐng)大家去看一下zepto實(shí)現(xiàn)tap的源碼。

1、“點(diǎn)透”是什么

你可能碰到過(guò)在列表頁(yè)面上創(chuàng)建一個(gè)彈出層,彈出層有個(gè)關(guān)閉的按鈕,你點(diǎn)了這個(gè)按鈕關(guān)閉彈出層后后,這個(gè)按鈕正下方的內(nèi)容也會(huì)執(zhí)行點(diǎn)擊事件(或打開(kāi)鏈接)。這個(gè)被定義為這是一個(gè)“點(diǎn)透”現(xiàn)象。

2.為什么會(huì)出現(xiàn)點(diǎn)透

zepto的tap通過(guò)兼聽(tīng)綁定在document上的touch事件來(lái)完成tap事件的模擬的,及tap事件是冒泡到document上觸發(fā)的

再點(diǎn)擊完成時(shí)的tap事件(touchstarttouchend)需要冒泡到document上才會(huì)觸發(fā),而在冒泡到document之前,用戶(hù)手的接觸屏幕(touchstart)和離開(kāi)屏幕(touchend)是會(huì)觸發(fā)click事件的,因?yàn)閏lick事件有延遲觸發(fā)(這就是為什么移動(dòng)端不用click而用tap的原因)(大概是300ms,為了實(shí)現(xiàn)safari的雙擊事件的設(shè)計(jì)),
所以在執(zhí)行完tap事件之后,彈出來(lái)的選擇組件馬上就隱藏了,此時(shí)click事件還在延遲的300ms之中,當(dāng)300ms到來(lái)的時(shí)候,click到的其實(shí)不是完成而是隱藏之后的下方的元素,如果正下方的元素綁定的有click事件此時(shí)便會(huì)觸發(fā),如果沒(méi)有綁定click事件的話就當(dāng)沒(méi)click,但是正下方的是input輸入框(或者select選擇框或者單選復(fù)選框),點(diǎn)擊默認(rèn)聚焦而彈出輸入鍵盤(pán),也就出現(xiàn)了上面的點(diǎn)透現(xiàn)象

3.點(diǎn)透的解決方法:

方案一:來(lái)得很直接github上有個(gè)fastclick可以完美解決

引入fastclick.js,因?yàn)閒astclick源碼不依賴(lài)其他庫(kù)所以你可以在原生的js前直接加上

 window.addEventListener( "load", function() {
    FastClick.attach( document.body );
 }, false );

或者有zepto或者jqm的js里面加上

 $(function() {
    FastClick.attach(document.body);
 });

當(dāng)然require的話就這樣:

 var FastClick = require("fastclick");
 FastClick.attach(document.body, options);

方案二:用touchend代替tap事件并阻止掉touchend的默認(rèn)行為preventDefault()

 $("#cbFinish").on("touchend", function (event) {
   //很多處理比如隱藏什么的
    event.preventDefault();
 });

方案三:延遲一定的時(shí)間(300ms+)來(lái)處理事件

 $("#cbFinish").on("tap", function (event) {
    setTimeout(function(){
    //很多處理比如隱藏什么的
    },320);
 }); 

這種方法其實(shí)很好,可以和fadeInIn/fadeOut等動(dòng)畫(huà)結(jié)合使用,可以做出過(guò)度效果

理論上上面的方法可以完美的解決tap的點(diǎn)透問(wèn)題,如果真的倔強(qiáng)到不行,用click

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93511.html

相關(guān)文章

  • Tap事件和Tap點(diǎn)透原理

    摘要:梳理一下事件的順序就是在中執(zhí)行回調(diào)點(diǎn)透的原理常見(jiàn)到有這種應(yīng)用場(chǎng)景,點(diǎn)擊遮罩層,遮罩層消失,露出底部的頁(yè)面。點(diǎn)透的解決方案統(tǒng)一使用事件,或者事件。 首先介紹tap事件: tap事件的意義:在移動(dòng)端,click事件會(huì)有300ms延遲,因?yàn)闉g覽器通過(guò)判斷300ms內(nèi)是否會(huì)繼續(xù)點(diǎn)擊,來(lái)判斷是否縮放網(wǎng)頁(yè)。(即雙擊放大網(wǎng)頁(yè)的效果有一個(gè)300ms的時(shí)間來(lái)判斷,300ms過(guò)去了,才會(huì)觸發(fā)click事...

    IamDLY 評(píng)論0 收藏0
  • 移動(dòng)-點(diǎn)透問(wèn)題 巧妙解決

    摘要:移動(dòng)端經(jīng)常出現(xiàn)點(diǎn)透,至于怎么出現(xiàn)的請(qǐng)大家去看一下實(shí)現(xiàn)的源碼。點(diǎn)透是什么你可能碰到過(guò)在列表頁(yè)面上創(chuàng)建一個(gè)彈出層,彈出層有個(gè)關(guān)閉的按鈕,你點(diǎn)了這個(gè)按鈕關(guān)閉彈出層后后,這個(gè)按鈕正下方的內(nèi)容也會(huì)執(zhí)行點(diǎn)擊事件或打開(kāi)鏈接。這個(gè)被定義為這是一個(gè)點(diǎn)透現(xiàn)象。 移動(dòng)端經(jīng)常出現(xiàn)點(diǎn)透,至于怎么出現(xiàn)的請(qǐng)大家去看一下zepto實(shí)現(xiàn)tap的源碼。 1、點(diǎn)透是什么 你可能碰到過(guò)在列表頁(yè)面上創(chuàng)建一個(gè)彈出層,彈出層有個(gè)關(guān)...

    MockingBird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<