Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { margin: 0; padding: 0; } body { background-color: black; }
JavaScript
var rnd = Math.random, flr = Math.floor; let canvas = document.createElement('canvas'); document.getElementsByTagName('body')[0].appendChild(canvas); canvas.style.position = 'absolute'; canvas.style.width = '100%'; canvas.style.height = '100%'; canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; let ctx = canvas.getContext('2d'); function rndNum(num) { return rnd() * num + 1; } function vector(x, y) { this.x = x; this.y = y; this.add = function(vec2) { this.x = this.x + vec2.x; this.y = this.y + vec2.y; } } function particle(pos, vel) { this.pos = new vector(pos.x, pos.y); this.vel = vel; this.dead = false; this.start = 0; this.update = function(time) { let timeSpan = time - this.start; if (timeSpan > 500) { this.dead = true; } if (!this.dead) { this.pos.add(this.vel); this.vel.y = this.vel.y + gravity; } }; this.draw = function() { if (!this.dead) { drawDot(this.pos.x, this.pos.y, 1); } } } function firework(x, y) { this.pos = new vector(x, y); this.vel = new vector(0, -rndNum(10) - 3); this.color = 'hsl(' + rndNum(360) + ', 100%, 50%)' this.size = 4; this.dead = false; this.start = 0; let exParticles = [], exPLen = 100; let rootShow = true; this.update = function(time) { if (this.dead) { return; } rootShow = this.vel.y < 0; if (rootShow) { this.pos.add(this.vel); this.vel.y = this.vel.y + gravity; } else { if (exParticles.length === 0) { flash = true; for (let i = 0; i < exPLen; i++) { exParticles.push(new particle(this.pos, new vector(-rndNum(10) + 5, -rndNum(10) + 5))); exParticles[exParticles.length - 1].start = time; } } let numOfDead = 0; for (let i = 0; i < exPLen; i++) { let p = exParticles[i]; p.update(time); if (p.dead) { numOfDead++; } } if (numOfDead === exPLen) { this.dead = true; } } } this.draw = function() { if (this.dead) { return; } ctx.fillStyle = this.color; if (rootShow) { drawDot(this.pos.x, this.pos.y, this.size); } else { for (let i = 0; i < exPLen; i++) { let p = exParticles[i]; p.draw(); } } } } function drawDot(x, y, size) { ctx.beginPath(); ctx.arc(x, y, size, 0, Math.PI * 2); ctx.fill(); ctx.closePath(); } var fireworks = [], gravity = 0.2, snapTime = 0, flash = false; function init() { let numOfFireworks = 20; for (let i = 0; i < numOfFireworks; i++) { fireworks.push(new firework(rndNum(canvas.width), canvas.height)); } } function update(time) { for (let i = 0, len = fireworks.length; i < len; i++) { let p = fireworks[i]; p.update(time); } } function draw(time) { update(time); ctx.fillStyle = 'rgba(0,0,0,0.3)'; if (flash) { flash = false; } ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = 'white'; ctx.font = "30px Arial"; let newTime = time - snapTime; snapTime = time; //ctx.fillText(newTime,10,50); ctx.fillStyle = 'blue'; for (let i = 0, len = fireworks.length; i < len; i++) { let p = fireworks[i]; if (p.dead) { fireworks[i] = new firework(rndNum(canvas.width), canvas.height); p = fireworks[i]; p.start = time; } p.draw(); } window.requestAnimationFrame(draw); } window.addEventListener('resize', function() { canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; }); init(); draw();
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>canvas烟花动画-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号