1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<!DOCTYPE html> <meta charset="utf-8"> <style> body { margin: 0; background: #222; min-width: 960px; } rect { fill: none; pointer-events: all; } circle { fill: none; stroke-width: 2.5px; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script>window.d3 || document.write('<script src="d3.min.js"><\/script>')</script> <script> var width = Math.max(960, innerWidth), height = Math.max(500, innerHeight); var i = 0; var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height); svg.append("rect") .attr("width", width) .attr("height", height) .on("ontouchstart" in document ? "touchmove" : "mousemove", particle); function particle() { var m = d3.mouse(this); svg.insert("circle", "rect") .attr("cx", m[0]) .attr("cy", m[1]) .attr("r", 1e-6) .style("stroke", d3.hsl((i = (i + 1) % 360), 1, .5)) .style("stroke-opacity", 1) .transition() .duration(2000) .ease(Math.sqrt) .attr("r", 100) .style("stroke-opacity", 1e-6) .remove(); d3.event.preventDefault(); } </script> |