Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { margin: 0px; padding: 0px; position: fixed; background: rgb(30,30,30);}
JavaScript
window.requestAnimFrame = (function() { return ( window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { window.setTimeout(callback); } ); }); function init(elemid) { let canvas = document.getElementById(elemid), c = canvas.getContext("2d"), w = (canvas.width = window.innerWidth), h = (canvas.height = window.innerHeight); c.fillStyle = "rgba(30,30,30,1)"; c.fillRect(0, 0, w, h); return {c:c,canvas:canvas}; } window.onload = function () { let c = init("canvas").c, canvas = init("canvas").canvas, w = canvas.width = window.innerWidth, h = canvas.height = window.innerHeight, mouse = { x: w / 2, y: h / 2 }, last_mouse = {}; let n = 2000, herd = []; class point { constructor() { this.targetIndex = [Math.floor(Math.random() * n)]; this.f = 10; this.ang = Math.random() * 2 * Math.PI; this.x = w / 2; //Math.random()*w; this.y = h / 2; //Math.random()*h; this.ax = this.f * Math.cos(this.ang); this.ay = this.f * Math.sin(this.ang); this.vx = this.ax; this.vy = this.ay; this.x += this.vx; this.y += this.vy; this.nd = Math.random() * 50 + 0.1; } follow(arr) { this.t = { x: 0, y: 0, sumx: 0, sumy: 0 }; this.count = 0; for (let i = 0; i < this.targetIndex.length; i++) { this.t.sumx += arr[this.targetIndex[i]].x; this.t.sumy += arr[this.targetIndex[i]].y; this.count++; } this.t.x = this.t.sumx / this.count; this.t.y = this.t.sumy / this.count; this.dist = Math.sqrt(Math.pow(this.x - this.t.x, 2) + Math.pow(this.y - this.t.y, 2)); this.ang = Math.atan2(this.t.y - this.y, this.t.x - this.x); this.f = this.dist / 500; if (this.f < 1) { this.f = 1; } if (this.dist > this.nd) { this.ax = this.f * Math.cos(this.ang); this.ay = this.f * Math.sin(this.ang); } else { this.ax = this.f * Math.cos(this.ang + Math.PI); this.ay = this.f * Math.sin(this.ang + Math.PI); } this.vx += this.ax; this.vy += this.ay; this.vx *= 0.9; this.vy *= 0.9; this.x += this.vx; this.y += this.vy; c.beginPath(); c.lineTo(this.x, this.y); c.lineTo(this.t.x, this.t.y); c.strokeStyle = 'white'; c.lineWidth = 0.1; c.stroke(); } show() { c.beginPath(); //c.arc(this.x,this.y,1,0,2*Math.PI); c.rect(this.x, this.y, 1, 1); c.fillStyle = "white"; c.fill(); }} for (let i = 0; i < n; i++) { herd.push(new point()); } //initiation function draw() { //animation for (let i = 0; i < n; i++) { herd[i].follow(herd); herd[i].show(); } } canvas.addEventListener( "mousemove", function (e) { last_mouse.x = mouse.x; last_mouse.y = mouse.y; mouse.x = e.pageX - this.offsetLeft; mouse.y = e.pageY - this.offsetTop; }, false); function loop() { window.requestAnimFrame(loop); c.fillStyle = "rgba(30,30,30,1)"; c.fillRect(0, 0, w, h); //c.clearRect(0, 0, w, h); draw(); } window.addEventListener("resize", function () { w = canvas.width = window.innerWidth, h = canvas.height = window.innerHeight; loop(); }); loop(); setInterval(loop, 1000 / 60); };
粒子
时间
文字
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号