|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<meta charset="utf-8"> |
|
|
|
<!-- D3.js --> |
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script> |
|
|
|
<style> |
|
body { |
|
text-align: center; |
|
} |
|
</style> |
|
|
|
</head> |
|
<body> |
|
|
|
<div id="widthMeasure"></div> |
|
<div id="chart"></div> |
|
|
|
<script language="javascript" type="text/javascript"> |
|
|
|
/////////////////////////////////////////////////////////////////////////// |
|
//////////////////// Set up and initiate svg containers /////////////////// |
|
/////////////////////////////////////////////////////////////////////////// |
|
|
|
var margin = { |
|
top: 20, |
|
right: 20, |
|
bottom: 20, |
|
left: 20 |
|
}; |
|
var width = document.getElementById('widthMeasure').offsetWidth - margin.left - margin.right - 10, |
|
height = 100; |
|
|
|
//SVG container |
|
var svg = d3.select("#chart") |
|
.append("svg") |
|
.attr("width", width + margin.left + margin.right) |
|
.attr("height", height + margin.top + margin.bottom) |
|
.append("g") |
|
.attr("transform", "translate(" + margin.left + "," + margin.top + ")"); |
|
|
|
/////////////////////////////////////////////////////////////////////////// |
|
/////////////////////////// Create the gradients ////////////////////////// |
|
/////////////////////////////////////////////////////////////////////////// |
|
|
|
//Container for the gradients |
|
var defs = svg.append("defs"); |
|
var linearGradient = defs.append("linearGradient") |
|
.attr("id","animate-gradient") |
|
.attr("x1","0%") |
|
.attr("y1","0%") |
|
.attr("x2","100%") |
|
.attr("y2","0") |
|
.attr("spreadMethod", "reflect"); |
|
|
|
var colours = ["#FDA860", "#FC8669", "#E36172", "#C64277", "#E36172", "#FC8669" ,"#FDA860"]; |
|
linearGradient.selectAll(".stop") |
|
.data(colours) |
|
.enter().append("stop") |
|
.attr("offset", function(d,i) { return i/(colours.length-1); }) |
|
.attr("stop-color", function(d) { return d; }); |
|
|
|
linearGradient.append("animate") |
|
.attr("attributeName","x1") |
|
.attr("values","0%;100%") |
|
.attr("dur","7s") |
|
.attr("repeatCount","indefinite"); |
|
|
|
linearGradient.append("animate") |
|
.attr("attributeName","x2") |
|
.attr("values","100%;200%") |
|
.attr("dur","7s") |
|
.attr("repeatCount","indefinite"); |
|
|
|
/////////////////////////////////////////////////////////////////////////// |
|
////////////////////////// Create the rectangle /////////////////////////// |
|
/////////////////////////////////////////////////////////////////////////// |
|
|
|
svg.append("rect") |
|
.attr("x", 0) |
|
.attr("y", 0) |
|
.attr("width", width) |
|
.attr("height", height) |
|
.style("fill", "url(#animate-gradient)"); |
|
|
|
</script> |
|
|
|
</body> |
|
</html> |