2016-06-23 61 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

相關問題