pat的區(qū)別?
移動端tap click pat的區(qū)別
一、click 與tap比較
click與tap都會出發(fā)點(diǎn)擊事件,但是在手機(jī)web端,click會有200-300ms延遲,所以一般用tap(輕擊)代替click作為點(diǎn)擊事件。singleTap 和 doubleTap分別代表單擊和雙擊。
二、使用tap會出現(xiàn)點(diǎn)透事件(事件穿透)
很多用過Zepto(移動端開發(fā)的庫)都說使用tap會出現(xiàn)點(diǎn)透事件。
1、什么是tap事件穿透
執(zhí)行完上層綁定的tap事件后,下層如果綁定著click事件或者本身就存在點(diǎn)擊事件(a/input)也會默認(rèn)觸發(fā),這就是點(diǎn)透事件,
2、出現(xiàn)點(diǎn)透事件的原因
首先要知道tap事件是通過監(jiān)聽綁定document上的touch事件來模擬的,并且tap 事件是冒泡到document上才出發(fā)的;
touchstart:在這個dom上用手觸摸就能開始
click:在這個dom上用手觸摸,且手指未曾移動,且在這個dom上手指離開屏幕,且觸摸和離開時間很短(有的瀏覽器可能不檢測時間間隔,照樣可以出發(fā)click),才開始觸發(fā)。
也就是說在移動端的事件觸發(fā)從早到晚排序:touchstart touchstop click。所以click的觸發(fā)是有延時的,大約300ms,所以click觸發(fā)的原則是,觸發(fā)當(dāng)前有click的元素,且該元素面朝用戶的最前端,才會觸發(fā)click。