D3鼠标悬停转换得到“0”;“卡住”;
D3 mouseover transitions gets "stuck"
假设我想为导航菜单创建常规悬停效果,但我使用D3过渡来"软化"效果,而不是CSS。对于.on
-方法,使用mouseover
和mouseout
可以很好地工作。然而,问题是,如果鼠标在转换完成之前离开悬停的链接,则转换会被卡住。如何避免这种副作用?
例如,使用此代码,即使鼠标移动到其他位置,如果速度过快,底部边框仍显示为橙色:
d3.selectAll("a")
.on("mouseover", function() {
d3.select(this)
.style("border-bottom-color", "#fff")
.transition()
.duration(1000)
.style("border-bottom-color", "#B23600"); })
.on("mouseout", function() {
d3.select(this)
.style("border-bottom-color", "#fff"); });
我认为发生的事情是,当只有mouseover
上有.transition
时,当你在1000ms到期之前离开时,过渡仍然没有完成。因此,当您提前离开时,鼠标悬停转换仍在运行,并且没有对mouseout事件的转换调用来覆盖此转换。(显然,即使是mouseout
事件也不会停止与mouseover
事件相关联的.transition
。)
但是,正如您所指出的,当您在mouseout事件上放置transition
时,问题消失了。我相信这是因为鼠标输出transition
优先于mouseover
.transition
,因此在mouseout
事件上具有.transition
将使mouseout
事件重新处于控制之下。
如果您在mouseout
事件上注释掉.transition
,您可以在此处看到它的实际操作。
http://jsfiddle.net/Ldmv6/1/
同样值得一读的是斯科特·默里即将出版的d3书中的第10章:http://ofps.oreilly.com/titles/9781449339739/_interactivity.html
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 当鼠标悬停在文本中的单词上时显示警报
- JsFiddle上的鼠标事件不起作用
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 将鼠标旋转限制为特定的度数
- 跟踪jqplot垂直折线图的鼠标位置
- node-webkit-从父窗口捕获iframe鼠标事件
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- Javascript-在视频中跟踪鼠标位置
- JQuery UI可拖动潜水与滚动棒到鼠标
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 在鼠标悬停时展开列表
- jQuery悬停在没有鼠标悬停的情况下启动
- 鼠标输入在 YUI 的 chrome 中不起作用
- 鼠标悬停时如何居中放大背景图像
- 被javascript正则表达式分组卡住了
- 什么好主意吗?鼠标进入/鼠标离开(我卡住了)
- D3鼠标悬停转换得到“0”;“卡住”;