Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { margin: 0; padding: 0; } canvas { display: block; }
JavaScript
var particleAlphabet = { Particle: function(x, y) { this.x = x; this.y = y; this.radius = 3.5; this.draw = function(ctx) { ctx.save(); ctx.translate(this.x, this.y); ctx.fillStyle = 'white'; ctx.fillRect(0, 0, this.radius, this.radius); ctx.restore(); }; }, init: function() { particleAlphabet.canvas = document.querySelector('canvas'); particleAlphabet.ctx = particleAlphabet.canvas.getContext('2d'); particleAlphabet.W = window.innerWidth; particleAlphabet.H = window.innerHeight; particleAlphabet.particlePositions = []; particleAlphabet.particles = []; particleAlphabet.tmpCanvas = document.createElement('canvas'); particleAlphabet.tmpCtx = particleAlphabet.tmpCanvas.getContext('2d'); particleAlphabet.canvas.width = particleAlphabet.W; particleAlphabet.canvas.height = particleAlphabet.H; setInterval(function(){ particleAlphabet.changeLetter(); particleAlphabet.getPixels(particleAlphabet.tmpCanvas, particleAlphabet.tmpCtx); }, 1200); particleAlphabet.makeParticles(1000); particleAlphabet.animate(); }, currentPos: 0, changeLetter: function() { var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZ', letters = letters.split(''); particleAlphabet.time = letters[particleAlphabet.currentPos]; particleAlphabet.currentPos++; if (particleAlphabet.currentPos >= letters.length) { particleAlphabet.currentPos = 0; } }, makeParticles: function(num) { for (var i = 0; i <= num; i++) { particleAlphabet.particles.push(new particleAlphabet.Particle(particleAlphabet.W / 2 + Math.random() * 400 - 200, particleAlphabet.H / 2 + Math.random() * 400 -200)); } }, getPixels: function(canvas, ctx) { var keyword = particleAlphabet.time, gridX = 6, gridY = 6; canvas.width = window.innerWidth; canvas.height = window.innerHeight; ctx.fillStyle = 'red'; ctx.font = 'italic bold 330px Noto Serif'; ctx.fillText(keyword, canvas.width / 2 - ctx.measureText(keyword).width / 2, canvas.height / 2 + 100); var idata = ctx.getImageData(0, 0, canvas.width, canvas.height); var buffer32 = new Uint32Array(idata.data.buffer); if (particleAlphabet.particlePositions.length > 0) particleAlphabet.particlePositions = []; for (var y = 0; y < canvas.height; y += gridY) { for (var x = 0; x < canvas.width; x += gridX) { if (buffer32[y * canvas.width + x]) { particleAlphabet.particlePositions.push({x: x, y: y}); } } } }, animateParticles: function() { var p, pPos; for (var i = 0, num = particleAlphabet.particles.length; i < num; i++) { p = particleAlphabet.particles[i]; pPos = particleAlphabet.particlePositions[i]; if (particleAlphabet.particles.indexOf(p) === particleAlphabet.particlePositions.indexOf(pPos)) { p.x += (pPos.x - p.x) * .3; p.y += (pPos.y - p.y) * .3; p.draw(particleAlphabet.ctx); } } }, animate: function() { requestAnimationFrame(particleAlphabet.animate); particleAlphabet.ctx.fillStyle = 'rgba(23, 41, 58, .8)'; particleAlphabet.ctx.fillRect(0, 0, particleAlphabet.W, particleAlphabet.H); particleAlphabet.animateParticles(); } }; window.onload = particleAlphabet.init;
粒子
时间
文字
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号