Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { height: 100vh; background: #0e0e0e; } #canvas { position: absolute; top: calc(50% - 300px); left: calc(50% - 300px); height: 600px; width: 600px; } #codepen-link { position: absolute; bottom: 30px; right: 30px; height: 60px; width: 60px; z-index: 10; border: 1px solid white; border-radius: 50%; box-sizing: border-box; background-image: url("http://www.seanalexanderfree.com/codepen/avatar.jpg"); background-position: center center; background-size: cover; opacity: 0.5; -webkit-transition: all 0.25s; transition: all 0.25s; } #codepen-link:hover { opacity: 0.8; box-shadow: 0 0 6px rgba(239, 239, 207, 0.8); }
JavaScript
(function(window, document, undefined) { var canvas, ctx, rect, mouse = { x: 0, y: 0 }, repulsion = 5000; var points = []; function distance(x1, y1, x2, y2) { return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); } function mouseMoveHandler(e) { rect = canvas.getBoundingClientRect(); mouse.x = e.clientX - rect.left; mouse.y = e.clientY - rect.top; } function createGrid() { var startX = 100, endX = canvas.width - 200, startY = 100, endY = canvas.height - 200, step = 20, xPoints = endX / step, yPoints = endY / step; for (var i = 0; i <= xPoints; i++) { for (var j = 0; j <= yPoints; j++) { points.push({ x: (i * step) + startX, y: (j * step) + startY, dx: (i * step) + startX, dy: (j * step) + startY, update: function() { var angle = Math.atan2(this.x - mouse.x, this.y - mouse.y); var dist = repulsion / distance(mouse.x, mouse.y, this.x, this.y); this.x += (Math.sin(angle) * dist) + (this.dx - this.x); this.y += (Math.cos(angle) * dist) + (this.dy - this.y); } }); } } } function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); for (var i = 0; i < points.length; points[i++].update()) { ctx.beginPath(); ctx.fillStyle = 'lime' ctx.moveTo(points[i].x, points[i].y); ctx.arc(points[i].x, points[i].y, 2, 0, Math.PI * 2, true); ctx.fill(); ctx.closePath(); } } function loop() { draw(); window.requestAnimationFrame(loop); } function init() { canvas = document.getElementById('canvas'); canvas.height = 600; canvas.width = 600; ctx = canvas.getContext('2d'); createGrid(); loop(); } window.onmousemove = mouseMoveHandler; window.onload = init; })(this, document);
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>粒子排斥网格-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号