Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { overflow: hidden; background-color: #000; } canvas { width: 100%; height: 100vh; }
JavaScript
window.onload = () => { const CANVAS = document.getElementsByTagName("canvas")[0]; const CTX = CANVAS.getContext("2d"); const CHARS = []; const MAX_CHARS = 200; const SEPARATION = 1.5; let ww, wh, camera; class Vector { constructor(x, y, z) { this.x = x; this.y = y; this.z = z; } rotate(dir, ang) { const X = this.x; const Y = this.y; const Z = this.z; const SIN = Math.sin(ang); const COS = Math.cos(ang); if (dir === "x") { this.y = Y * COS - Z * SIN; this.z = Y * SIN + Z * COS; } else if (dir === "y") { this.x = X * COS - Z * SIN; this.z = X * SIN + Z * COS; } } project() { const ZP = this.z + camera.z; const DIV = ZP / 600; const XP = (this.x + camera.x) / DIV; const YP = (this.y + camera.y) / DIV; const CENTER = getCenter(); return [XP + CENTER[0], YP + CENTER[1], ZP]; } } class Char { constructor(letter, pos) { this.letter = letter; this.pos = pos; } rotate(dir, ang) { this.pos.rotate(dir, ang); } render() { const PIXEL = this.pos.project(); const XP = PIXEL[0]; const YP = PIXEL[1]; const MAX_SIZE = 50; const SIZE = (1 / PIXEL[2] * MAX_SIZE) | 0; const BRIGHTNESS = SIZE / MAX_SIZE; const COL = `rgba(255, 255, ${100 * BRIGHTNESS | 0 + 150}, ${BRIGHTNESS})`; CTX.beginPath(); CTX.fillStyle = COL; CTX.font = SIZE + "px monospace"; CTX.fillText(this.letter, XP, YP); CTX.fill(); CTX.closePath(); } } function getCenter() { return [ww / 2, wh / 2]; } function signedRandom() { return Math.random() - Math.random(); } function render() { for (let i = 0; i < CHARS.length; i++) { CHARS[i].render(); } } let time = 0; function update() { CTX.clearRect(0, 0, ww, wh); for (let i = 0; i < CHARS.length; i++) { const DX = 0.005 * Math.sin(time * 0.001); const DY = 0.005 * Math.cos(time * 0.001); CHARS[i].rotate("x", DX); CHARS[i].rotate("y", DY); } ++time; } function loop() { window.requestAnimationFrame(loop); update(); render(); } function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }; function createChars() { for (let i = 0; i < MAX_CHARS; i++) { const CHARACTER = String.fromCharCode((Math.random() * 93 + 34) | 0); const X = signedRandom() * SEPARATION; const Y = signedRandom() * SEPARATION; const Z = signedRandom() * SEPARATION; const POS = new Vector(X, Y, Z); const CHAR = new Char(CHARACTER, POS); CHARS.push(CHAR); } } function setDim() { ww = window.innerWidth; wh = window.innerHeight; CANVAS.width = ww; CANVAS.height = wh; } function initCamera() { camera = new Vector(0, 0, SEPARATION + 1); } window.onresize = setDim; (() => { setDim(); initCamera(); createChars(); loop(); })(); };
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>ASCII码3d旋转-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号