Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { margin: 0; } canvas { display: block; }
JavaScript
class Circle { constructor(x, y) { this.x = x; this.y = y; this.r = 3; } draw() { let nrOfPoints = Math.round(this.r * 0.2 + 3); let deltaAngle = Math.PI * 2 / nrOfPoints; for(let i = 0; i < nrOfPoints; i += 1) { let angle = i * deltaAngle; let r = Math.random() * this.r * 0.32 + this.r * 0.63; let x = Math.cos(angle) * r; let y = Math.sin(angle) * r; let x2 = this.x + x; let y2 = this.y + y; ctx.beginPath(); ctx.moveTo(this.x, this.y); ctx.lineTo(x2, y2); ctx.stroke(); ctx.beginPath(); ctx.arc(x2, y2, 4, 0, Math.PI * 2); ctx.fill(); } } } let canvas; let ctx; let w, h; let circles; function setup() { canvas = document.querySelector("#canvas"); ctx = canvas.getContext("2d"); reset(); window.addEventListener("resize", () => { reset(); draw(); }); canvas.addEventListener("click", draw); } function reset() { w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; } function clear() { ctx.fillStyle = "#224"; ctx.fillRect(0, 0, w, h); ctx.fillStyle = "#0ff"; ctx.strokeStyle = "#0ff"; ctx.lineWidth = 2; } function dist(x1, y1, x2, y2) { let xDiff = x1 - x2; let yDiff = y1 - y2; return Math.sqrt(xDiff * xDiff + yDiff * yDiff); } function addCircles() { let nrOfTries = 0; let wasAdded; do { wasAdded = false; let x = Math.random() * w; let y = Math.random() * h; if(validPos(x, y)) { wasAdded = true; let c = new Circle(x, y); circles.push(c); } nrOfTries++; } while (!wasAdded && nrOfTries < 100) } function validPos(x, y) { for(let i = 0; i < circles.length; i++) { let current = circles[i]; let d = dist(x, y, current.x, current.y); if(d - 14 < current.r) { return false; } } return true; } function canGrow(circle) { for(let i = 0; i < circles.length; i++) { let current = circles[i]; if(circle !== current) { let d = dist(circle.x, circle.y, current.x, current.y); if(d - 2 <= circle.r + current.r) { return false; } } } return true; } function resetCircles() { circles = []; } function packCircles() { let nrOfTries = w * h / 300; for(let i = 0; i < nrOfTries; i++) { if(i % 5 === 0) { addCircles(); } circles.forEach(c => { if(canGrow(c)) { c.r += 2; } }); } } function drawCircles() { circles.forEach(c => c.draw()); } function draw() { clear(); resetCircles(); packCircles(); drawCircles(); } setup(); 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号