大半夜睡不着,来个雪花动画
作者:互联网
效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <canvas id="canvas" style="border: 1px solid; background-color: #000000"></canvas> <script> const cvs = document.getElementById('canvas'); const ctx = cvs.getContext('2d'); // 初始化宽高 const screenSize = {width: window.screen.width, height: window.screen.height} cvs.setAttribute('width', screenSize.width); cvs.setAttribute('height', screenSize.height); // 随机一个坐标点 function randomPos() { const x = Math.ceil(Math.random() * screenSize.width); const y = Math.ceil(Math.random() * screenSize.height); return {x, y} } function randomSnow() { const p = randomPos(); const r = Math.floor(Math.random() * 3); const dis = Math.ceil(Math.random() * 4); const blur = 5 + Math.ceil(Math.random() * 5); proSnow(p, r, blur); return {p: p, r: r, dis: dis, blur: blur}; } function proSnow(p, r, blur) { ctx.beginPath(); ctx.arc(p.x, p.y, r, 0, Math.PI * 2 * 180); ctx.strokeStyle = '#FFF'; ctx.fillStyle = '#FFF'; ctx.stroke(); ctx.fill(); ctx.shadowBlur = blur; ctx.shadowColor = "#FFF"; ctx.closePath(); } // 随机生产雪花 const snows = []; for (let i = 0; i < 500; i++) { snows.push(randomSnow()); } // 让雪花飘起来 setInterval(() => { startSnow(); }, 60) function startSnow() { ctx.clearRect(0, 0, screenSize.width, screenSize.height); for (const snow of snows) { snow.p.y = snow.p.y + snow.dis; if (snow.p.y > screenSize.height) { snow.p.y = -10; snow.dis = Math.ceil(Math.random() * 4); } proSnow(snow.p, snow.r, snow.blur); } } // const animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame; // window.requestAnimationFrame(startSnow) </script> </body> </html>
标签:动画,大半夜,const,来个,ctx,snow,screenSize,blur,Math 来源: https://www.cnblogs.com/hello-dummy/p/15168732.html