javascript - 触摸设备 HTML 元素 :hover state

标签 javascript css hover touch ipod-touch

有一个 HTML 按钮,有 3 种背景 - 每一种用于正常、悬停和单击状态。当然,它适用于非触摸设备。如果按钮在触摸设备上被点击,:hover 状态也会被触发并保持直到另一个元素被触摸。

是否有可能在点击元素后以编程方式从元素中删除 :hover 状态或阻止它在触摸设备上激活?

抱歉,我们不接受检测鼠标悬停和鼠标移出事件以及添加人工类的建议。

一种可能的解决方案是预先将“无触摸”类添加到 html 元素,如果仅检测到触摸设备则将其删除。在这种情况下,CSS 选择器“html.no-touch button:hover”将不匹配触摸设备。

您是否知道可以建议的更优雅的解决方案?

最佳答案

我会尝试在手持设备的附加样式表中覆盖 :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 */
}

但是,我不确定手持设备和触摸屏是否完全相同,可能有些设备有触摸屏但不符合手持设备的条件。

编辑: 看来您无法 100% 可靠地检测到触摸屏设备,另请参阅 this question .

关于javascript - 触摸设备 HTML 元素 :hover state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670551/

相关文章:

javascript - 无法触发 onmouseenter 事件?

JavaFX - 这个包含上下文菜单的奇怪容器是什么

html - 图像的条件 CSS 样式取决于其*原始*宽度或高度

html - 如何悬停元素样式本身和另一个元素

css - 用于旋转 slider 的图像悬停 CSS

javascript - Angular:按钮文本插值不起作用

函数内的 JavaScript 通过变量名调用函数

javascript - 使用 Javascript 从远程 php 文件接收变量?

css - :before pseudo-class affect tspan in SVG? 是否

css - IE8 li :hover, 在 li 元素之间的空白处触发悬停?