【发布时间】:2016-12-23 14:05:19
【问题描述】:
通常我需要在悬停时显示菜单,而移动设备的菜单应在点击时打开。现在例如考虑以下示例:
.btn {
width: 200px;
background-color: #333;
color: white;
padding: 10px;
}
.menu {
display: none;
padding: 15px;
}
.btn:hover .menu {
display: block;
}
.btn:focus .menu {
display: block;
}
<div class="btn">
Button
<div class="menu">I am menu</div>
</div>
现在这会自动在移动设备上运行,因为悬停状态在触摸设备上是粘性的。但是,这种 hack 是否适用于所有触控设备?也就是说,值得冒险吗?会有一些触摸设备没有悬停状态吗?显然,另一种方法是在触摸设备上使用 JavaScript 分配触摸/点击事件,但这似乎是多余的,因为我还没有看到任何没有粘性悬停状态的触摸设备?
所以我的问题是:
是否可以使用悬停状态破解,或者我应该使用 JavaScript 事件来使其更加防弹?
【问题讨论】:
-
我会去的,应该没问题。
-
@Roberrrt 真的,我在以前的工作中一直使用这种方法,但现在我有点怀疑了。
-
应该没问题。
-
我能想到的(唯一)令人担忧的场景是,如果相关元素不可聚焦,那么下拉菜单就不会发生在它上面。
-
如果您使用
<a>-元素和:target,或<input type="checkbox">和:checked,则可以避免整个问题 - 据我所知,没有浏览器甚至考虑修改链接/表单功能。
标签: javascript android html css touch