1

我的场景是这样的:我有一个带有选项的选择框和一个可爱的 D3 力布局可视化。

我想使用这些选项来淡入/淡出我的可视化的某些部分。我在这种特殊情况下使用 jQuery,例如:

$("select.filter.tag").change(function() {
  var cls = "."+$(this).val();
  if(cls != "."){
    d3.selectAll(".node:not("+cls+"), .link:not("+cls+")").transition()
      .duration(500)
      .style("opacity", 0);

    d3.selectAll(".node"+cls+", .link"+cls).transition()
      .duration(500)
      .style("opacity", 1);
  }
  else{
    d3.selectAll(".node, .link").transition()
      .duration(500)
      .style("opacity", 1)
  }
});

但是,这不会淡入/淡出我的可视化的任何部分。某些部分会在一瞬间消失(这是在最新版本的 Firefox 中,代码实际上适用于 Chrome 和 Safari)

预览:https ://dl.dropbox.com/u/41566165/question/index.html

有没有人可以帮忙?

4

1 回答 1

0

您应该将您的 transition().duration(500).style('opacity', 1) 替换为 jQuery 内置的 fadeIn/fadeOut,并以毫秒为单位的适当动画时间。

查看jQuery FadeOut 文档

淡出示例:

$('.node:not("+cls+"), .link:not("+cls+")').fadeOut(900);

淡入与淡出非常相似:

$('.node'+cls+', .link'+cls').fadeIn(900);
于 2013-05-13T15:51:42.887 回答