HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Random Particles</title>
</head>
<body style="margin: 0;">
<canvas></canvas>
</body>
<script src="./js/index.js"></script>
</html>
JS文件:
class CircleElem{
constructor(){
this.transparency = Math.random()
this.color = `rgba(${255*Math.random()},${255*Math.random()},${255*Math.random()},${this.transparency})`
this.radius = 10*Math.random()+1
this.v = 5*Math.random()+1
this.angle = 360*Math.random()
this.x = centerX
this.y = centerY
}
//传入画布
draw(ctx){
ctx.beginPath();
ctx.arc(this.x,this.y,this.radius,0,2*Math.PI)
ctx.closePath();
ctx.fillStyle=this.color;
ctx.fill();
}
}
let arr = []
const CNT = 3
const canvas = document.querySelector('canvas')
canvas.width = window.innerWidth
canvas.height = window.innerHeight
let centerX = canvas.width/2
let centerY = canvas.height/2
const ctx = canvas.getContext('2d')
function createCircle(){
for(let i = 0;i<CNT;i++){
let circle = new CircleElem()
arr.push(circle)
}
}
createCircle()
function drawCircle(){
ctx.clearRect(0,0,canvas.width,canvas.height);
for(circle of arr){
circle.y += circle.v*Math.sin(circle.angle);
circle.x += circle.v * Math.cos(circle.angle);
circle.transparency-=0.4
circle.v+=0.5
circle.draw(ctx)
}
createCircle()
setTimeout(drawCircle,30);
}
drawCircle()
实现效果: