Flera SVG- bollar skapas med och studsas runt av JavaScript
A Pen by Lars Gunther on CodePen.
Flera SVG- bollar skapas med och studsas runt av JavaScript
A Pen by Lars Gunther on CodePen.
<h1>Bollar som studsar</h1> | |
<svg width="500" height="500"> | |
<!-- Hit kommer circle via JS --> | |
</svg> |
/* jshint esversion: 6 */ | |
function moveBall(ball, cx, cy, xSpeed, ySpeed) { | |
if (cx > (svgWidth-10) || cx < 10) { | |
xSpeed = -xSpeed; | |
} | |
if (cy > (svgHeight-10) || cy < 10) { | |
ySpeed = -ySpeed; | |
} | |
cx += xSpeed; | |
cy += ySpeed; | |
ball.setAttribute("cx", cx); | |
ball.setAttribute("cy", cy); | |
setTimeout(moveBall.bind(undefined, ball, cx, cy, xSpeed, ySpeed), 20); | |
} | |
let numToCreate = 30; | |
let svgns = "http://www.w3.org/2000/svg"; | |
let svg = document.getElementsByTagName("svg")[0]; | |
let svgWidth = svg.getAttribute("width"); | |
let svgHeight = svg.getAttribute("height"); | |
for ( let i=0; i < numToCreate; i++ ) { | |
let ball = document.createElementNS(svgns, "circle"); | |
let colorAngle = 360 * i / numToCreate; | |
ball.setAttribute("fill", "hsl(" + colorAngle + ", 100%, 50%)"); | |
ball.setAttribute("r", 10); | |
svg.appendChild(ball); | |
moveBall(ball, 10+5*i, 10+5*i, Math.random()*5, Math.random()*5); | |
} |
body { | |
background-color: silver; | |
} | |
h1 { | |
font-family: sans-serif; | |
text-align: center; | |
} | |
svg { | |
border: 2px solid; | |
background-color: #eee; | |
margin: auto; | |
display: block; | |
} |