Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { width: 100%; height: 100%; overflow: hidden; background-color: #031927; margin: 0; font-family: Century Gothic, CenturyGothic, AppleGothic, sans-serif; } .f { position: fixed; bottom: 5px; right: 15px; font-family: 'Arial'; font-size: 0.7rem; color: #aaa; text-align: center; } .f a { font-size: 0.8rem; color: #fff; }
JavaScript
'use strict'; /**/ /* ---- CORE ---- */ /**/var canvas = document.createElement('canvas'); /**/var context = canvas.getContext('2d'); /**/var windowWidth = canvas.width = window.innerWidth; /**/var windowHeight = canvas.height = window.innerHeight; /**/canvas.id = 'canvas'; /**/document.body.insertBefore(canvas, document.body.firstChild); /**/window.onresize = function () { /**/windowWidth = canvas.width = window.innerWidth; /**/windowHeight = canvas.height = window.innerHeight; /**/ }; /**/ /* ---- CORE END ---- */ /* ---- CREATING ZONE ---- */ // http://inconvergent.net/shepherding-random-numbers/ /* ---- SETTINGS ---- */ var numberParticlesStart = 1000; var particleSpeed = 0.3; var velocity = 0.9; var circleWidth = 50; /* ---- INIT ---- */ var particles = []; var getRandomFloat = function getRandomFloat(min, max) { return Math.random() * (max - min) + min; }; /* ---- Particle ---- */ function Particle(x, y) { this.x = x; this.y = y; this.vel = { x: getRandomFloat(-20, 20) / 100, y: getRandomFloat(-20, 20) / 100, min: getRandomFloat(2, 10), max: getRandomFloat(10, 100) / 10 }; this.color = 'rgba(255, 255, 255, 0.05)'; } Particle.prototype.render = function () { context.beginPath(); context.fillStyle = this.color; context.arc(this.x, this.y, 1, 0, Math.PI * 2); context.fill(); }; Particle.prototype.update = function () { var forceDirection = { x: getRandomFloat(-1, 1), y: getRandomFloat(-1, 1) }; if (Math.abs(this.vel.x + forceDirection.x) < this.vel.max) { this.vel.x += forceDirection.x; } if (Math.abs(this.vel.y + forceDirection.y) < this.vel.max) { this.vel.y += forceDirection.y; } this.x += this.vel.x * particleSpeed; this.y += this.vel.y * particleSpeed; if (Math.abs(this.vel.x) > this.vel.min) { this.vel.x *= velocity; } if (Math.abs(this.vel.y) > this.vel.min) { this.vel.y *= velocity; } this.testBorder(); }; Particle.prototype.testBorder = function () { if (this.x > windowWidth) { this.setPosition(this.x, 'x'); } else if (this.x < 0) { this.setPosition(windowWidth, 'x'); } if (this.y > windowHeight) { this.setPosition(this.y, 'y'); } else if (this.y < 0) { this.setPosition(windowHeight, 'y'); } }; Particle.prototype.setPosition = function (pos, coor) { if (coor === 'x') { this.x = pos; } else if (coor === 'y') { this.y = pos; } }; /* ---- Functions ----*/ function loop() { var i = undefined; var length = particles.length; for (i = 0; i < length; i++) { particles[i].update(); particles[i].render(); } requestAnimationFrame(loop); } /* ---- START ---- */ function init() { var i = undefined; for (i = 0; i < numberParticlesStart; i++) { var angle = Math.random() * 360; particles.push(new Particle(windowWidth * 0.5 + Math.cos(angle) * circleWidth, windowHeight * 0.5 - Math.sin(angle) * circleWidth)); } } init(); window.addEventListener('click', function () { particles = []; context.clearRect(0, 0, windowWidth, windowHeight); init(); }); loop();
粒子
时间
文字
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号