d3.js圆形悬停动画
d3.js circle hover animation
感谢您的光临。快速问题:
我这里有一个简单的网络图。我已经在圆圈上指定了鼠标悬停效果。因此,当你将其悬停时,通过增加其半径,将其乘以3,圆将被"高亮显示"。
function mouseoverC() {
d3.select(this).select("circle").transition()
.duration(750)
.attr("r", d3.select(this).select("circle").attr("r") * 3);
}
function mouseoutC() {
d3.select(this).select("circle").transition()
.duration(750)
.attr("r", d3.select(this).select("circle").attr("r") / 3);
}
当鼠标离开时,它会将其分割,使其回到原来的半径。这样做的原因是,圆的半径不会对所有人都一样,而是会有所不同。现在,如果你做得很巧妙,它就可以工作了,但如果你不等到动画结束,就把鼠标拿出来,然后快速地重新放回原处,圆圈就会不断增加,当然反之亦然,如果你在鼠标恢复到原始状态时快速移动鼠标,它就会变小。
解决此问题的最佳方法是什么?
创建节点时,可以为init radius添加变量:
nodes = tasks.map(function(k){
var entry;
entry = {
name: k,
radius:10
};
if (map.get(k).fixed) {
entry.fixed = true;
entry.x = map.get(k).x;
entry.y = map.get(k).y;
}
return entry;
});
然后你在鼠标上改变他的尺寸,如下所示:
function mouseoverC() {
d3.select(this).select("circle").transition()
.duration(750)
.attr("r", function(d){return d.radius*3});
}
//hover opposite, to bring back to its original state
function mouseoutC() {
d3.select(this).select("circle").transition()
.duration(750)
.attr("r", function(d){return d.radius});
}
相关文章:
- jQuery悬停动画只在其他类似元素中的一个元素上
- 我只想在卡片悬停上悬停动画,而不是在身体上
- 如何使用if hasClass条件禁用jQuery mouseleave事件?//悬停动画
- 如何让时间轴悬停动画在某个 ID 可见时停止
- 如果悬停:动画完成后重新调用功能
- jQuery 淡入淡出图像上的悬停动画会断开链接
- jQuery Knob 悬停动画
- 基本 jquery 鼠标悬停动画
- SVG悬停动画上未完成转换的动画,当悬停快速发生时
- d3.js圆形悬停动画
- .stop()未阻止悬停动画的生成
- jQuery悬停动画期间的最后一次潜水闪烁
- 停止悬停动画
- PHP:如何通过点击(或悬停)动画静态图像
- jQuery悬停动画队列
- 拉斐尔-悬停动画
- Jquery CSS鼠标悬停动画工作不顺畅
- JQuery中鼠标离开时停止悬停动画
- IE后退悬停动画
- CSS边框悬停动画