3

我有一个可以单击的 div(通过 jQuery $('.mydiv').click)-这会扩展 div,第二次单击会折叠它。

相同的 div:hover应用了一些 CSS 规则(即在悬停时显示更多信息) - 这在 PC 上按预期工作。

使用 iOS 设备时,点击有效,并且还应用了:hover伪类 - 所以我的额外信息会显示出来。这几乎正​​是我想要发生的事情(令人惊讶)。

然而,仅仅在 CSS 中有一个带有:hover伪类的东西并不意味着点击就会显示它。

那么 iOS 应用(或不应用):hover状态的规则是什么?有一些文档可以查看吗?

我真的不想在悬停下隐藏功能,并且必须编写一些特定于触摸的 JavaScript 才能使它们工作,因为似乎 iOS 已经为我做了一些工作 - 我只想知道如何专门使用该功能而不是不仅仅是发生在它上面!

4

1 回答 1

4

您可能知道,iOS 实际上并不支持:hover伪类,因为它使用基于触摸的界面。出于兼容性原因,它确实会在特定情况下触发鼠标事件,但这种行为并不是模拟或触发元素:hover状态的最可靠方法,因为您实际上无法像使用鼠标一样用手指悬停元素指针。从此技术说明

此外,iPhone OS 上的 Safari 用户直接用手指与您的 Web 内容交互,而不是使用鼠标。这为支持触摸的界面创造了新的机会,但不适用于悬停状态。例如,鼠标指针可以悬停在网页元素上并触发事件;Multi-Touch 屏幕上的手指不能。出于这个原因,在 iPhone OS 上的 Safari 中模拟了鼠标事件。因此,仅依赖 、 或 CSS 伪类的元素在mousemoveiPad或iPhone 等触摸屏设备上的行为可能并不总是如预期的那样。mouseovermouseout:hover

也就是说,由于鼠标事件确实对应于 CSS 中基于鼠标的 UI 状态,因此在文档中对它们进行了一定程度的介绍,但并没有太多。我确实在这里找到了一些东西:

iOS 不支持以下 Web 技术:

这意味着:hover仅在可点击元素上受支持。可点击事件在这里定义为:

可点击元素是链接、表单元素、图像地图区域或任何其他带有mousemovemousedownmouseuponclick处理程序的元素。

话虽如此,如果您想在 iOS 上提供一致且可靠的用户体验,最好的选择是为触控而设计,因为它就是为此而生的。

于 2013-06-19T10:21:56.103 回答