2016-06-23 102 views
4

我在D3相当新,最近看到这段代码,而有人正在创建一个转换:d3.select({})d3.select({}).transition()等。这似乎是做同样的事情d3.select([])。在控制台中,它显示为一个数组,但我仍然不确定它的功能。任何帮助将不胜感激,谢谢!D3的“空白”选择是做什么的?

+0

这看起来很有趣!你在哪里看到它?你能分享一个链接吗?没有任何背景知识,很难说它有什么用处。 – altocumulus

+0

我在这里找到它(第49行):http://codepen.io/atticweb/pen/GZKvgv,同时试图从这里制作实时图:https://gist.github.com/mbostock/1642874。希望有所帮助! –

回答

5

我见过的唯一的地方是here。现在通常你会d3.select你想运行转换的对象。但是在这个链接的例子中,Bostock是而不是在由不同的DOM对象组成的svg上操作,而不是在一个画布上进行操作,而是在过渡中的每一步都必须对其进行擦除和重绘。因此,d3.select({}).transition(),简单地变成一个简单的方法来启动他可以使用的通用转换。你应该注意,必须选择一些东西来创建一个转换,只是做d3.select().transition()将不起作用,而一个空的对象(或一个空的数组)允许它工作。

+0

谢谢!所以它似乎只是一个快速的方式来实现过渡。得到它了。 –

+2

值得注意的是,这将在每次被调用时创建一个**新**转换。我的第一个想法是使用['d3.transition()'](https://github.com/d3/d3/wiki/Transitions#d3_transition)创建一个转换。但是,在这种情况下,它不会像人们想象的那样工作,因为它等同于'd3.select(document).transition()',从而中断以前在'document'开始的转换。当选择一个空对象开始一个转换时,所有这些转换都是相互独立的,因此可以同时运行。 @PeterQiu – altocumulus

+1

下面是SVG上使用的这个技巧的一个例子:https://bost.ocks.org/mike/path/(source中索引js文件中的第143行) – plafer

相关问题