forked from zanarmstrong's block: Adaption of Jfire.io animation, for teaching purposes
forked from zanarmstrong's block: Stripped adaptation of Jfire.io animation, for teaching purposes
forked from zanarmstrong's block: Adaption of Jfire.io animation, for teaching purposes
forked from zanarmstrong's block: Stripped adaptation of Jfire.io animation, for teaching purposes
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> | |
<style> | |
</style> | |
</head> | |
<body> | |
<script> | |
// created by http://jfire.io/animations/2015-03-09/, adapted for demo | |
var width = 500, | |
height = 500, | |
n = 20; | |
var margin = {top: 20, right: 10, bottom: 20, left: 10}; | |
var svg = d3.select("body").append("svg") | |
.attr("width", width) | |
.attr("height", height) | |
var g = svg.selectAll(".groups") | |
.data(d3.range(n)) | |
.enter().append("g").attr("class", "group"); | |
g.append("path") | |
.attr("fill", "none") | |
.attr("stroke", "#d1d1d1") | |
.attr("stroke-width", 3) | |
.attr("d", "M-150,0L150,0"); | |
g.selectAll("ellipse") | |
.data([-150, 150]) | |
.enter().append("ellipse") | |
.attr("cx", function(d) { return d; }) | |
.attr("cy", 0) | |
.attr("rx", 10) | |
.attr("ry", 7) | |
.attr("fill", "#bbb"); | |
d3.timer(function(t) { | |
g.attr("transform", function(d) {return "translate(" + [width / 2, (d + 1) * height / (n + 1)] + ")scale(" + (Math.sin(d / 2 - t / 1000) + 1) / 2 + ","+ 0.1*d+")";}) | |
}); | |
</script> | |
</body> | |