动画和控制 D3JS 可折叠树节点和链接
Animating and Controlling D3JS Collapsible Tree nodes and links
对此处给出的解决方案的补充 -> is it possible to draw dashed links only for child to child nodes of tree layout in d3 js
在上面的例子中,我在 CSS 中对 Transition 动画做了一些小改动。 CSS 的更改如下,
.link_dashed {
fill: none;
stroke: #ff0000;
stroke-width: 1.5px;
stroke-dasharray: 20,10,5,5,5,10;
animation: dash 5s linear;
animation-iteration-count: infinite;
animation-direction: reverse;
}
@keyframes dash {
to {
stroke-dashoffset: 250;
}
}
它为破折号设置动画,并将移动显示为前进或后退的路径。给出的示例演示 here。但是我需要能够控制哪些虚线移动?我需要能够控制哪些虚线在节点之间移动以及不同节点之间的连接,以便我可以控制那里的动画。我查看了下面代码中的 d
,
var link = svg.selectAll(".link")
.data(links)
.enter()
.append("path")
.attr("class", function (d) { return (d.source != root) ? "link_dashed" : "link_continuous" ; })
.attr("d", diagonal);
但我不确定是否需要控制源或目标,以及是否可以为每个源附加样式?如何只控制单个节点及其连接?
我刚刚对自己的代码库进行了一些更改。事实证明,我的猜测是正确的。不确定它是否可以更细粒度,但此示例在更高级别上控制整个节点。下面给出的代码更改,
var link = svg.selectAll(".link")
.data(links)
.enter()
.append("path")
.attr("class", function (d) { return (d.source != root && d.source.children[0].name != 'AgglomerativeCluster') ? "link_dashed" : "link_continuous" ; })
.attr("d", diagonal);
对此处给出的解决方案的补充 -> is it possible to draw dashed links only for child to child nodes of tree layout in d3 js
在上面的例子中,我在 CSS 中对 Transition 动画做了一些小改动。 CSS 的更改如下,
.link_dashed {
fill: none;
stroke: #ff0000;
stroke-width: 1.5px;
stroke-dasharray: 20,10,5,5,5,10;
animation: dash 5s linear;
animation-iteration-count: infinite;
animation-direction: reverse;
}
@keyframes dash {
to {
stroke-dashoffset: 250;
}
}
它为破折号设置动画,并将移动显示为前进或后退的路径。给出的示例演示 here。但是我需要能够控制哪些虚线移动?我需要能够控制哪些虚线在节点之间移动以及不同节点之间的连接,以便我可以控制那里的动画。我查看了下面代码中的 d
,
var link = svg.selectAll(".link")
.data(links)
.enter()
.append("path")
.attr("class", function (d) { return (d.source != root) ? "link_dashed" : "link_continuous" ; })
.attr("d", diagonal);
但我不确定是否需要控制源或目标,以及是否可以为每个源附加样式?如何只控制单个节点及其连接?
我刚刚对自己的代码库进行了一些更改。事实证明,我的猜测是正确的。不确定它是否可以更细粒度,但此示例在更高级别上控制整个节点。下面给出的代码更改,
var link = svg.selectAll(".link")
.data(links)
.enter()
.append("path")
.attr("class", function (d) { return (d.source != root && d.source.children[0].name != 'AgglomerativeCluster') ? "link_dashed" : "link_continuous" ; })
.attr("d", diagonal);