Skip to content

Instantly share code, notes, and snippets.

@EE2dev
Last active January 21, 2018 19:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EE2dev/de48398a14720e99683c734f6782fdc5 to your computer and use it in GitHub Desktop.
Save EE2dev/de48398a14720e99683c734f6782fdc5 to your computer and use it in GitHub Desktop.
Chained transition with different elements
license: mit
<!DOCTYPE html>
<meta charset="utf-8">
<head>
<script src="https://d3js.org/d3.v4.js"></script>
</head>
<body>
<script>
let sel = d3.select("body");
let selFirst = sel.append("h1").attr("class", "chained-transition first").text("first");
let selSecond = sel.append("h1").attr("class", "chained-transition second").text("second");
let selThird = sel.append("h1").attr("class", "chained-transition third").text("third");
let chainedSel = d3.selectAll(".chained-transition").data([1000,2000,3000]);
chainedTransition(chainedSel);
function chainedTransition(_chainedSel, _index = 0) {
let nextSel = _chainedSel.filter(function(d,i) { return _index === i;});
transitionNext(nextSel);
function transitionNext(_selection){
_selection.transition()
.duration(d => d)
.style("opacity", 0)
.transition()
.duration(d => d)
.style("opacity",1)
.style("color", "green")
.on ("end", function() {
_index = _index + 1;
if (_chainedSel.size() > _index) {
nextSel = _chainedSel.filter(function(d,i) { return _index === i;});
transitionNext(nextSel);
}
});
}
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment