2011-04-14 56 views
3

有一個HTML按鈕,3個背景 - 每個用於正常,懸停和點擊狀態。當然,它在非觸摸設備上工作正常。如果點擊觸摸設備上的按鈕,則:懸停狀態也會被觸發並保持到另一個元素被觸摸。觸控設備HTML元素:懸停狀態

是否有可能以編程方式刪除:點擊後懸停在元素上的狀態或阻止它在觸摸設備上激活?

對不起,但我們不接受關於檢測mouseover和mouseout事件並添加人造類的建議。

一種可能的解決方案是預先向html元素添加「非觸摸」類,如果僅檢測到觸摸設備,則將其刪除。在這種情況下,CSS選擇器「html.no-touch button:hover」與觸摸設備不匹配。

你知道你可能會建議更優雅的解決方案嗎?

+0

難道我們假設你不能只是得到的無':hover'?正如出於某種原因,':hover'只是沒有被使用是一個問題,因爲在我看來,其他兩個州應該工作得很好。 – 2011-04-14 22:43:27

+0

忽略:懸停支持,將使Web應用程序對沒有觸摸設備的用戶的交互性稍差。如果找不到可靠的解決方案,則此要求將被刪除,原因在於:懸停在觸摸設備上會產生更多視覺問題。 – Zygimantas 2011-04-14 23:18:30

+2

有趣。我希望移動瀏覽器忽略':hover',因爲無論如何你都無法真正將鼠標懸停在某個元素上。 – 2011-04-14 23:32:58

回答

1

我會嘗試覆蓋在附加的樣式表像手持設備:hover狀態:

<link rel="stylesheet" type="text/css" href="handheld.css" media="handheld"> 

handheld.css放像:

#some_selector:hover { 
    background: none; /* if you are setting a background in the main css file for example */ 
} 

不過,我可不是確定handheld和觸摸屏是否完全相同,可能有觸摸屏的設備並不適合作爲手持設備。

編輯:看來你不能100%可靠地檢測觸摸屏設備,也可以參考this question

+1

爲了讓事情變得更加複雜,Android和iOS會忽略media =「handheld」。 – Zygimantas 2011-04-15 00:06:20