如何有效停用觸控裝置上的 :hover 樣式:綜合指南
如何在觸控裝置上停用: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中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
如何修復KB5055523無法在Windows 11中安裝?
3 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
3 週前
By DDD
R.E.P.O.的每個敵人和怪物的力量水平
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
<🎜>:死鐵路 - 如何馴服狼
3 週前
By DDD
藍王子:如何到達地下室
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
