如何在觸控裝置上停用:hover 樣式:綜合指南
問題:
當觸控裝置造訪網站時,::懸空停CSS 樣式在點擊或點擊時觸發。這可能會分散注意力,甚至導致互動元素無法存取。
目標:
在不知道每個聲明選擇器的情況下刪除或忽略觸控裝置的所有 :hover CSS 聲明。
解決方案:
JavaScript 刪除
使用 JavaScript 刪除所有包含 :hover 的 CSS 規則。
<code class="javascript">if (hasTouch()) { for (var si in document.styleSheets) { for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) { if (styleSheet.rules[ri].selectorText.match(':hover')) { styleSheet.deleteRule(ri); } } } }</code>
優點:
- 與舊版瀏覽器相容,不需要更改 CSS。
缺點: - 停用混合滑鼠和觸控裝置上的懸停,損害使用者體驗。
- 只能刪除同一網域上所託管的樣式表。
僅 CSS 與媒體查詢
使用 @media 區塊包含 :hover 規則。
<code class="css">@media (hover: hover) { a:hover { color: blue; } }</code>
優點:
- 易於在 CSS 中實現。
缺點: - 需要支援懸停媒體查詢(iOS 9.0、Android Chrome、Android 5.0)。
- 混合老鼠和觸控設備不一致。
觸控偵測與 CSS 注入
偵測觸控事件使用 JavaScript 並有條件地新增 CSS 類別。
<code class="js">if (!hasTouch()) document.body.className += ' hasHover'</code>
<code class="css">body.hasHover a:hover { color: blue; }</code>
優點:
- 比混合觸控裝置的媒體查詢更可靠。
缺點: - 仍會受到觸控模擬事件(例如觸控螢幕上的滑鼠遊標)的影響。
最終解決方案:動態懸停偵測
基於滑鼠遊標和觸控事件啟用或停用懸停樣式。
<code class="js">function watchForHover() { document.addEventListener('touchstart', updateLastTouchTime, true) document.addEventListener('touchstart', disableHover, true) document.addEventListener('mousemove', enableHover, true) }</code>
優點:
- 最強大的解決方案,適用於所有瀏覽器。
- 動態調整懸停樣式以適應裝置輸入。
缺點: - 觸碰事件後有短暫的延遲(例如 500 毫秒)以防止模擬老鼠移動事件。
以上是如何有效停用觸控裝置上的 :hover 樣式:綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React生態系統為我們提供了許多庫,所有庫都集中在拖放的相互作用上。我們有反應,反應,可愛dnd,

我可以說我經常使用背景折疊。 IT Wager IT幾乎從未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用RequestAnimationFrame進行動畫化應該很容易,但是如果您還沒有徹底閱讀React的文檔,那麼您可能會遇到一些事情

聽著,我不是GraphQL專家,但我確實喜歡與之合作。作為前端開發人員,它向我曝光數據的方式非常酷。它就像一個菜單


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。