Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { margin: 0; } canvas { display: block; }
JavaScript
/* Johan Karlsson, 2019 https://twitter.com/DonKarlssonSan MIT License, see Details View */ let canvas; let ctx; let w, h; let mouseX, mouseY; let stacks; class Stack { constructor(x, y) { this.x = x; this.y = y; this.size = Math.random() *200 + 100; } draw(angle, sizeFactor) { let deltaX = Math.cos(angle) * sizeFactor * 0.015; let deltaY = Math.sin(angle) * sizeFactor * 0.015; for (let i = 0; i < 3; i++) { drawSquare(this.x - i * deltaX, this.y - i * deltaY, this.size + i * 3); } }} function setup() { canvas = document.querySelector("#canvas"); ctx = canvas.getContext("2d"); reset(); window.addEventListener("resize", reset); canvas.addEventListener("mousemove", mousemove); mouseX = w * 0.75; mouseY = h * 0.75; } function reset() { w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; setupStacks(); } function draw() { requestAnimationFrame(draw); ctx.fillStyle = "white"; ctx.fillRect(0, 0, w, h); drawStacks(); } function setupStacks() { let nrOfStacks = w * h / 1000; stacks = []; for (let i = 0; i < nrOfStacks; i++) { let x = Math.random() * w; let y = Math.random() * h; let stack = new Stack(x, y); stacks.push(stack); } } function drawStacks() { stacks.forEach(stack => { let deltaY = mouseY - stack.y; let deltaX = mouseX - stack.x; let angle = Math.atan2(deltaY, deltaX); let distFromCenter = Math.sqrt(deltaX * deltaX + deltaY * deltaY); stack.draw(angle, distFromCenter); }); } function drawSquare(x, y, size) { ctx.save(); ctx.translate(x, y); ctx.rotate(Math.PI / 3); ctx.strokeRect(-size / 2, -size / 2, size, size); ctx.fillRect(-size / 2 + 1, -size / 2 + 1, size - 2, size - 2); ctx.restore(); } function mousemove(event) { mouseX = event.clientX; mouseY = event.clientY; } 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号