【发布时间】:2017-03-24 18:04:08
【问题描述】:
我想为支持悬停的浏览器(例如桌面浏览器)和不支持悬停的浏览器(例如触摸屏设备)提供单独的行为。具体来说,我想在支持它的浏览器上声明一个悬停状态,但不是为不支持它的浏览器声明一个悬停状态,以避免让移动浏览器通过额外的点击来模拟它,因为这会破坏页面上的其他交互 - 通过不定义悬停避免这些浏览器的状态。
我已经阅读了Interaction Media Queries 功能,看起来它应该可以解决问题。我可以这样做:
@media (hover: none) {
/* behaviour for touch browsers */
}
根据CanIUse,它适用于我需要支持的所有浏览器,除了 IE11 和 Firefox。
所以我想知道我是否可以反过来做 - 因为主要的触摸设备都支持它,然后否定它:
@media not (hover: none) {
/* behaviour for desktop browsers */
}
但是,这似乎根本不起作用。
我正在尝试做的伪代码示例:
.myelement {
/* some styling */
/* note: no hover state here */
}
@media(this device supports hover) {
.myelement:hover {
/* more styling */
}
}
那么,有没有办法让这项工作以预期的方式工作,还是我走错了路?
【问题讨论】:
-
请不要使用媒体查询“hover”。我在我的 27" 显示器上使用鼠标,但我所有的浏览器都有设置 "hover:none" 虽然我喜欢并且能够悬停很多。也许我所有的浏览器都有 hover:none 因为我的笔记本电脑在我的外围设备连接有触摸屏。也许你可以试试any-hover媒体查询developer.mozilla.org/en-US/docs/Web/CSS/@media/any-hover
-
@Andreas 将此作为答案,以便它足够突出以被发现。因为这个,我快疯了。每个人都在谈论悬停,我的浏览器都不能通过
pointer:fine检测到我的鼠标,也不能通过hover:hover接受悬停。但是这个提示正在解决它...... -
我做了一个网站,你可以参考这个问题andreasburg.de/lenovo-browser-hover-check.html测试你的浏览器的设置
-
现在至少在 2021 年,您有两个用于
hover的关键字,如 MDN 文档中的 here 中所述,不确定您是否正在寻找此实现,但希望有人会在未来! -
@Andreas 您能否将媒体查询“指针”的测试添加到您的测试网站?在 1 个地方对 2 个相关查询进行测试会很方便。
标签: css hover media-queries touch interaction-media-features