如何讓 H5 體驗接近 APP (一)觸控反饋

2021-09-18 02:27:04 字數 1907 閱讀 6224

那麼,如何在頁面上加入這樣的反饋呢?目前了解到的有三種方案,總結如下:

這種方式大多數前端童鞋都能聯想到,因為pc web就是這樣定義這種反饋的,那麼在移動端,這個方案如何呢?我們先來看看w3c對:active的定義:

the-user-action-pseudo-classes-hover-act
可以看到,w3c標準裡對它的描述都是基於mouse事件的,完全沒有說明如何支援touch事件。而正是由於標準對此並沒有乙個準確定義,瀏覽器對此的理解和實際支援也是參差不齊。

在實際應用中,active偽類在移動端的表現也不是太好,在ios系統中甚至需要"hack"才能正常使用。若仔細看mdn對active偽類介紹,會發現下面這一段話:

mdn :active

[1] by default, safari mobile does not use the:activestate unless there is atouchstartevent handler on the relevant element or on the.

也就是說,在ios中,我們需要繫結乙個touchstart事件來啟用這一行為。**如下:

document.addeventlistener('touchstart', function(){});
經過反覆測試,得出結論如下:

安卓機型上觸發反饋會有延遲。和click的300ms延遲一樣。

ios上按住反饋元素後再將手指移出元素,反饋效果依然還在。(正常情況,手指移出元素應當取消反饋效果)

測試demo:

-webkit-tap-highlight-color
所以,我們可以在需要反饋的元素上包裹一層a標籤,然後設定這個屬性。缺點是只能設定顏色和透明圖(rgba)。如果想要設定一些動畫效果(比如去哪網首頁的縮放效果),這個方案也是不適用的。

第三個方法通過自定義touch事件來觸發反饋,具體方法如下文所示:

在touchstart觸發的時候,給元素加上class(比如圖中是波紋效果)並且在手指持續放在元素上的時候保持class不被移除。

touchmove移出元素或者觸發滾動條時移除class。當然,touchend和touchcancel也必須移除反饋class。

如果只是想要簡單實現的話,可以選擇前兩種方案,配置相對簡單。追求良好體驗的童鞋推薦第三種方案,第三種方案整體思想不是很複雜,但也不能對所有的互動元素都單獨配置一次,這樣也有失**的優雅。

經過思考和折騰,本人提出了乙個方案-->touchfeedback.js,在使用者體驗和開發體驗之間取了乙個平衡,這裡是一些使用touchfeedback.js做的反饋效果(pc需要模擬手機檢視):一些有趣的反饋效果

H5喚醒App如何實現

在這個流量為王的網際網路背景下,移動端的h5頁面顯然在導流上承擔著重要作用,在h5頁面上,我們對引流的需求有兩種 1 url scheme 是scheme的名稱,代表著協議名稱。它包含 authority 和 path。可選專案,隔開或 隔開的鍵值對 可選專案包,其它額外的標識資訊 儘管url sc...

如何快速成為APP製作 H5製作高手?

html5是html最新的修訂版本,2014年10月由全球資訊網聯盟 w3c 完成標準制定。html5的設計目的是為了在移動裝置上支援多 html5,簡稱h5.h5的製作,市場上主要有以下幾類公司。1 公關公司 這類公司離客戶最近,他們承接客戶的活動比較多,一般是受客戶要求或主動向客戶推薦h5的方式...

如何區分APP內的原生還是H5

1 看斷網的情況 把手機的網路斷掉。然後點開頁面。然後可以正常顯示的東西就是原生寫的。顯示404或則錯誤頁面的是html頁面。2 看布局邊界 開發者選項 顯示布局邊界,頁面元素很多的情況下布局是一整塊的是h5的,布局密密麻麻的是原生控制項。頁面有布局的是原生的,否則為h5頁面。僅針對安卓手機試用 如...