17
在移动浏览器上禁用悬停效果
我正在编写一个打算同时在台式机和平板电脑上使用的网站。当从桌面上访问它时,我希望屏幕的可单击区域以各种:hover效果(不同的背景色等)亮起。使用平板电脑时,没有鼠标,所以我不希望任何悬停效果。 问题是,当我在平板电脑上点击某物时,浏览器显然具有某种“隐形鼠标光标”,它会移动到我点击的位置,然后将其留在那儿-所以我刚刚点击的东西会亮起悬停效果,直到我点击其他东西。 使用鼠标时如何获得悬停效果,而使用触摸屏时如何抑制它们? 万一有人在想建议,我不想使用用户代理嗅探。同一台设备可能同时具有触摸屏和鼠标(今天可能不那么普遍,但将来会越来越多)。我对设备不感兴趣,对当前使用方式不感兴趣:鼠标或触摸屏。 我已经尝试挂钩touchstart,touchmove和touchend事件,并呼吁preventDefault()对所有的人,这确实抑制“隐形鼠标”的一些时间; 但是,如果我在两个不同的元素之间快速来回轻按,轻按几下,它将开始移动“鼠标光标”并preventDefault始终照亮悬停效果-好像我并不总是很荣幸。除非有必要,否则我不会为您提供任何细节-我什至不确定这是否是正确的方法。如果有人有一个更简单的解决方法,我将不知所措。 编辑:可以使用bog-standard CSS复制:hover,但这是一个快速的复制参考。 <style> .box { border: 1px solid black; width: 150px; height: 150px; } .box:hover { background: blue; } </style> <div class="box"></div> <div class="box"></div> 如果将鼠标悬停在任何一个框上,它将获得蓝色的背景,这是我想要的。但是,如果您点击其中任何一个框,它也会显示蓝色背景,这是我要防止的事情。 我还在此处发布了一个示例,该示例执行了上述操作,并且还挂钩了jQuery的鼠标事件。您可以使用它来查看点击事件也会触发mouseenter,mousemove并且mouseleave。
113
javascript
hover
touch