【发布时间】:2016-10-29 21:45:25
【问题描述】:
我需要检测用户是否将鼠标悬停在某个元素上,这很简单。但是,当元素动画时,这些事件似乎不会触发。如果您查看我的小提琴,只需让元素通过鼠标动画而不移动鼠标,您会看到事件不会触发。为什么会发生这种情况是有道理的,但我一直无法找到一种获得我想要的行为的好方法,即即使用户没有移动他/她的鼠标并且元素在它下面动画也能检测到悬停.
有什么想法吗?
谢谢!
注意:不使用外部库的解决方案是最佳的,但仍然感谢任何帮助:)
HTML
<div id='moving'></div>
<ul id="message"></ul>
CSS
#moving {
width: 50px;
height: 50px;
background-color: red;
animation: move 7s linear;
}
@keyframes move {
from {transform: translateX(0px)}
to {transform: translateX(500px)}
}
JS
var counter = 0;
document.getElementById("moving").addEventListener("mouseover", function(){
counter++;
var node = document.createElement("LI");
var textnode = document.createTextNode("Entered " + counter);
node.appendChild(textnode);
document.getElementById("message").appendChild(node);
});
document.getElementById("moving").addEventListener("mouseout", function(){
var node = document.createElement("LI");
var textnode = document.createTextNode("Left " + counter);
node.appendChild(textnode);
document.getElementById("message").appendChild(node);
});
这里是它的一个小提琴: https://jsfiddle.net/w5j842Lx/
【问题讨论】:
-
@natel 这种逻辑对于它正在做的事情来说非常昂贵。
-
是的,我希望有更好的解决方案,但我不知道。
标签: javascript html css animation mouseover