使用 mouseover 和 mouseout 而不是 :hover

Posted

技术标签:

【中文标题】使用 mouseover 和 mouseout 而不是 :hover【英文标题】:Using mouseover and mouseout instead of :hover 【发布时间】:2013-07-11 03:18:45 【问题描述】:

对于一个项目,我想用 .hover 类模拟 css :hover 伪类,我在 mouseovermouseout 事件上添加/删除它。 问题是,这对性能有多大影响,差异有多大? 这是一个例子:link

【问题讨论】:

【参考方案1】:

您希望通过重写 CSS 在 javascript 中的功能来实现什么?

JavaScript 几乎总是比 CSS 慢。在像这样非常简单的情况下,它可能不会引起注意。然而,当你开始得到很多时(想想一个典型网站的链接数量;例如,*** 在这个页面上大约有 100 个链接;它加起来非常快),你会开始变得明显变慢-downs。

其中一个主要原因是您必须启动 JavaScript 处理器,找到与 JavaScript 搜索匹配的所有元素,并向其中添加事件侦听器。此外,JavaScript 对硬件加速的访问与 CSS 不同。当您开始包含 CSS 可以执行的过渡和转换时,这开始成为一个主要因素。

也不要忘记考虑开发和维护时间。大多数人会期望您声明的行为出现在 CSS 中。当他们在那里找不到它时,他们将不得不四处挖掘,然后通过 JavaScript 代码进行心理解析以找到您的伪悬停代码。这需要时间和精力更好地花在其他事情上。

【讨论】:

【参考方案2】:

性能取决于个人用户的计算机。除非禁用 JavaScript,否则您很可能在任何机器上都看不到任何差异。您可能希望考虑包含一些 CSS,以在用户禁用 JavaScript 的情况下对此进行补偿。

【讨论】:

以上是关于使用 mouseover 和 mouseout 而不是 :hover的主要内容,如果未能解决你的问题,请参考以下文章

当博客加载更多图像时,mouseover 和 mouseout 淡入淡出效果停止

mouseover和mouseout事件在鼠标经过子元素时也会触发

mouseover 与 mouseout 使用时闪烁问题

jQuery因mouseover,mouseout冒泡产生的闪烁问题

jq:mouseover和mouseout多次触发解决办法

Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别