Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
移动鼠标或手指以捕捉所有:D
css
html, body{ overflow: hidden; background: #000; padding: 0px; margin: 0px; } #info{ position: absolute; top: 0px; left: 0px; color: #fff; font-size: 16px; background: rgba(40,40,40,0.5); padding: 6px; border-radius: 4px; }
JavaScript
canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); w = ctx.canvas.width = window.innerWidth; h = ctx.canvas.height = window.innerHeight; window.onresize = function() { w = ctx.canvas.width = window.innerWidth; h = ctx.canvas.height = window.innerHeight; }; parts = []; emitCount = 1; textSize = 30; glowSize = 20; pullRadius = 50; maxTime = 5000; minTime = 3000; spawnRate = 300; limitDots = 100; trailSize = 0.9; cmpx = -pullRadius; cmpy = -pullRadius; function create() { if(parts.length
i; i++) { parts.push({ x: Math.random() * w, y: -textSize, vx: Math.random() * 4 - 2, vy: Math.random() * 2 - 1, ts: Date.now(), tl: Math.random()*(maxTime - minTime) + minTime, h: Math.random()*(320-170)+170 }); } } } function draw(){ for (i = 0; parts.length > i; i++) { var dif = (Date.now()-parts[i].ts)/parts[i].tl; var pct = 1 - (Math.round(dif*100)/100); ctx.beginPath(); ctx.strokeStyle = "hsla(0,0%,100%,"+pct+")"; ctx.lineWidth = textSize/4; ctx.fillStyle = "hsla("+parts[i].h+", 100%, 50%, "+pct+")"; ctx.shadowColor = "hsla("+parts[i].h+", 100%, 50%, "+pct+")"; ctx.shadowBlur = glowSize; ctx.font = "bold "+textSize+"px sans-serif"; ctx.strokeText("100", parts[i].x-(textSize), parts[i].y+(textSize/2)); ctx.fillText("100", parts[i].x-(textSize), parts[i].y+(textSize/2)); ctx.closePath(); } ctx.beginPath(); ctx.strokeStyle = "hsla(0,0%,100%,1)"; ctx.arc(cmpx,cmpy,pullRadius,0,Math.PI*2); //ctx.stroke(); ctx.closePath(); } function physics(){ for (i = 0; parts.length > i; i++) { if (parts[i].y + (textSize/2) >= h) { parts[i].vy = -parts[i].vy * 0.8;/*Damping*/ parts[i].y = h - textSize; parts[i].vx *= 0.8;/*Traction*/ } parts[i].vy += 0.2;/*Gravity*/ parts[i].x += parts[i].vx; parts[i].y += parts[i].vy; if(dist(parts[i].x, parts[i].y, cmpx, cmpy) < pullRadius){ parts[i].vx = (cmpx - parts[i].x) / 7; parts[i].vy = (cmpy - parts[i].y) / 7; } } } function lifeTime(){ for (i = 0; parts.length > i; i++) { if(parts[i].ts + parts[i].tl < Date.now()){ parts.splice(i,1); } } } function clearCanvas(){ ctx.shadowBlur = 0; ctx.fillStyle="rgba(0,0,0,"+Math.abs(trailSize-1)+")" ctx.rect(0,0,w,h); ctx.fill(); } function dist(x1, y1, x2, y2) { var a = x1 - x2; var b = y1 - y2; return Math.sqrt(a * a + b * b); } function render() { clearCanvas(); draw(); physics(); lifeTime(); } document.onmousemove = function(e) { cmpx = e.clientX; cmpy = e.clientY; }; document.ontouchmove = function(e){ cmpx = e.changedTouches[0].pageX; cmpy = e.changedTouches[0].pageY; } setInterval(create, spawnRate); setInterval(render, 17); canvas.onmouseleave = function(){ cmpx = -pullRadius; cmpy = -pullRadius; }
粒子
时间
文字
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号