You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
HTML
58 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<style>
|
|
#flyer {
|
|
width: 100%;
|
|
max-width: 800px;
|
|
}
|
|
</style>
|
|
<body>
|
|
|
|
|
|
<!-- the flyer svg -->
|
|
<object id="flyer" type="image/svg+xml" data="flyer.svg" ></object>
|
|
|
|
</body>
|
|
<script>
|
|
|
|
// function to get a random polarity, returns 1 or -1
|
|
function get_r_polarity() {
|
|
var r = Math.floor(Math.random() * 2);;
|
|
if (r==0) return 1;
|
|
return -1;
|
|
}
|
|
|
|
// get the svg element in the DOM
|
|
var flyer_obj = document.getElementById("flyer");
|
|
|
|
// start animation once the svg element is loaded
|
|
flyer_obj.addEventListener("load",function(){
|
|
|
|
// fetch the svg structure and find all elements belonging to the class 'moveable'
|
|
var svg_doc = flyer_obj.contentDocument;
|
|
var moveables = svg_doc.getElementsByClassName("moveable");
|
|
|
|
// function to move one random element of the class 'moveable'
|
|
function move_svg_el() {
|
|
// generate a random id
|
|
var r_id = Math.floor(Math.random() * moveables.length);
|
|
|
|
// generate random translations (unbounded, minimum of 10px)
|
|
var r_x = get_r_polarity() * (Math.random(50) + 10);
|
|
var r_y = get_r_polarity() * (Math.random(50) + 10);
|
|
|
|
// translate the selected element with the generated distances
|
|
var s = 'translate(' + r_x.toString() + ',' + r_y.toString() + ')';
|
|
moveables[r_id].setAttribute('transform',s);
|
|
}
|
|
|
|
// eveny 100ms, call the function that animates one element
|
|
var timer = setInterval(move_svg_el, 200);
|
|
|
|
}, false);
|
|
|
|
</script>
|
|
<script src="https://issue.xpub.nl/23/quilt/quilt.js" data-cutFileName="false" data-cutFileName="false"></script>
|
|
<link rel="stylesheet" type="text/css" href="https://issue.xpub.nl/23/quilt/quilt.css">
|
|
</html>
|