徹底解決安卓和IOS瀏覽器click的300ms延遲問題


首先說一下300ms延遲的由來,2004年蘋果為了實現在移動端雙擊縮放功能,給click事件增加了300ms延遲,如果300ms內發生第二次click則判定為雙擊縮放頁面。這一成功的解決方案得到各大瀏覽器廠商爭相效仿。但他的弊端很快顯現,在移動端click事件會降低響應速度。谷歌率先推出禁止雙擊縮放的屬性:

<meta name="viewport" content="user-scalable=no">
<meta name="viewport" content="initial-scale=1,maximum-scale=1">

禁止雙擊縮放,自然就沒有了click延遲問題。

但是~但是~從IOS10開始,蘋果開始允許用戶強制雙擊縮放,上面的代碼無效了……

這個問題困擾我很久,嘗試過fastclick等庫,效果依然不理想。最后發現touch-action屬性,可以完美解決click的300ms延遲問題:

html {
  touch-action: manipulation;
}

加上meta標簽可以做到更好的兼容性。

由於是設置了全局的html屬性,打開Safari雙擊網頁放下不能雙擊縮放了。也沒有了300ms延遲。

參考文獻:
https://thx.github.io/mobile/300ms-click-delay
https://developer.mozilla.org/zh-CN/docs/Web/CSS/touch-action


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM