D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
chule
Full window
Github gist
selection.join
Built with
blockbuilder.org
<!DOCTYPE html> <head> <meta charset="utf-8"> <script src="https://d3js.org/d3.v5.min.js"></script> <style> body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } </style> </head> <body> <script> // Feel free to change or delete any of the code you see in this editor! var svg = d3.select("body").append("svg") .attr("width", 960) .attr("height", 500) var letters = svg.append("g") .attr("transform","translate(200, 200)") function randomLetters() { return d3.shuffle("abcdefghijklmnopqrstuvwxyz".split("")) .slice(0, Math.floor(6 + Math.random() * 20)) .sort(); } const t = letters.transition() .duration(750); function runLetters(){ letters.selectAll("text") .data(randomLetters(), d => d) .join( enter => enter.append("text") .attr("fill", "green") .style("font-size", 36) .style("font-family", "monospace") .attr("x", (d, i) => i * 22) .attr("y", -30) .text(d => d) .call(enter => enter.transition(t) .attr("y", 0)), update => update .attr("fill", "black") .attr("y", 0) .call(update => update.transition(t) .attr("x", (d, i) => i * 22)), exit => exit .attr("fill", "brown") .call(exit => exit.transition(t) .attr("y", 30) .remove()) ); } runLetters(); window.setInterval(function (){ runLetters(); }, 2500) </script> </body>
https://d3js.org/d3.v5.min.js