Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS设备处理:hover伪类的默认方式是什么?_Javascript_Ios_Css_Css Selectors_Pseudo Class - Fatal编程技术网

Javascript iOS设备处理:hover伪类的默认方式是什么?

Javascript iOS设备处理:hover伪类的默认方式是什么?,javascript,ios,css,css-selectors,pseudo-class,Javascript,Ios,Css,Css Selectors,Pseudo Class,我有一个可以单击的div(通过jQuery$('.mydiv')。单击)-这将展开div,第二次单击将其折叠 同一个div应用了一些CSS:hover规则(即显示有关hover的更多信息)-这在PC上可以正常工作 当使用iOS设备时,单击会起作用,并且还会应用:hover伪类-因此会显示我的额外信息。这正是我想要发生的(令人惊讶) 然而,在CSS中使用带有:hover伪类的东西并不意味着点击就会显示它 那么iOS在应用(或不应用)悬停状态时遵循的规则是什么?有一些文档可以查看吗 我真的不想把功能

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

同一个div应用了一些CSS
:hover
规则(即显示有关hover的更多信息)-这在PC上可以正常工作

当使用iOS设备时,单击会起作用,并且还会应用
:hover
伪类-因此会显示我的额外信息。这正是我想要发生的(令人惊讶)

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

那么iOS在应用(或不应用)悬停状态时遵循的规则是什么?有一些文档可以查看吗


我真的不想把功能隐藏在悬停下,必须编写一些特定于触摸屏的JavaScript来让它们工作,因为iOS似乎已经在为我做一些工作了——我只是想知道如何专门使用这些功能,而不是仅仅在它之间发生

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

此外,iPhone操作系统上的Safari用户直接用手指与您的web内容交互,而不是使用鼠标。这为支持触摸的界面创造了新的机会,但不能很好地处理悬停状态。例如,鼠标指针可以悬停在网页元素上并触发事件;多点触摸屏上的手指不能移动。因此,在iPhone操作系统上的Safari中模拟鼠标事件。因此,仅依赖于
mousemove
mouseover
mouseout
或CSS伪类
:hover
的元素在iPad或iPhone等触摸屏设备上的行为可能并不总是如预期的那样

这就是说,由于鼠标事件确实对应于CSS中基于鼠标的UI状态,所以文档中在一定程度上对它们进行了介绍,但介绍不多。我确实发现了一些东西:

iOS不支持以下web技术:

  • 鼠标悬停事件

    用户无法在iOS上“鼠标悬停”不可单击的元素。元素必须可单击,才能发生
    鼠标悬停
    事件,如中所述

  • 悬停样式

    由于
    mouseover
    事件仅在
    mousedown
    事件之前发送,因此仅当用户触摸并按住具有悬停样式的可单击元素时,才会显示悬停样式。阅读iOS上手势生成的所有事件

这意味着只有可单击的元素才支持
:hover
。可点击事件定义为:

可单击元素是一个链接、表单元素、图像映射区域或具有
mousemove
mousedown
mouseup
onclick
处理程序的任何其他元素


话虽如此,如果你想在iOS上提供一致可靠的用户体验,你最好的选择就是为触摸设计,因为这就是它的目的。

一个彻底的答案!谢谢你,先生。我的意图是一种渐进式的提高。i、 e.如果可以使用悬停,那么就使用它,但不要依赖悬停状态-网站应该可以在没有悬停的情况下使用。i、 例如,在我的例子中,单击一个div展开,自动显示悬停状态,这纯粹是向用户显示更多的信息。当内容被扩展时,它是完全相关的信息。如果知道元素是可点击的(在本例中是),就会出现:hover,这很好。非常感谢。