Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { box-sizing: border-box; } body { background: #111; min-height: 100vh; } canvas { touch-action: none; height: 100vh; width: 100vw; }
JavaScript
function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}const { innerWidth, TweenMax, Power0, Zdog: { Illustration, TAU, Shape } } = window; const randomInRange = (max, min) => Math.floor(Math.random() * (max - min + 1)) + min; const Scene = new Illustration({ element: 'canvas', resize: 'fullscreen', dragRotate: true, rotate: { x: TAU * -0.075, y: TAU * 0.1 } }); const AXIS_LENGTH = Math.max(300, innerWidth * 0.25); const PIPE_LIFESPAN = 2000; const PIPE_SPEED = 0.002; const PIPE_STROKE = 5; const PIPE_COLORS = [ '#e4e9ed', '#f27935', '#fef160', '#7befb2', '#6bb9f0', '#be90d4', '#f64747']; let CURRENT_PIPE = undefined; class Pipe { constructor(opts) {_defineProperty(this, "IS_ALIVE", true);_defineProperty(this, "ACTIVE_AXIS", undefined);_defineProperty(this, "LENGTH", 0);_defineProperty(this, "SHAPE", undefined);_defineProperty(this, "start", () => { this.ACTIVE_AXIS = ['x', 'y', 'z'].filter(v => v !== this.ACTIVE_AXIS)[ this.ACTIVE_AXIS ? Math.floor(Math.random() * 2) : Math.floor(Math.random() * 3)]; this.SHAPE.path = [ ...this.SHAPE.path, { ...this.SHAPE.path[this.SHAPE.path.length - 1] }]; const currentPos = this.SHAPE.path[this.SHAPE.path.length - 1][ this.ACTIVE_AXIS]; const newPos = randomInRange(-AXIS_LENGTH / 2, AXIS_LENGTH / 2); const distance = Math.abs(newPos - currentPos); this.LENGTH += distance; const duration = distance * PIPE_SPEED; TweenMax.to(this.SHAPE.path[this.SHAPE.path.length - 1], duration, { [this.ACTIVE_AXIS]: newPos, ease: Power0.easeNone, onComplete: () => { new Shape({ addTo: Scene, stroke: PIPE_STROKE * 2, color: this.SHAPE.color, translate: this.SHAPE.path[this.SHAPE.path.length - 1] }); if (this.LENGTH > PIPE_LIFESPAN) { this.IS_ALIVE = false; } else { this.start(); } } }); });this.SHAPE = new Shape({ addTo: Scene, stroke: PIPE_STROKE, closed: false, ...opts });new Shape({ addTo: Scene, stroke: PIPE_STROKE * 2, translate: opts.path[0], color: opts.color });this.start();}} const start = () => { Scene.updateRenderGraph(); Scene.rotate.y += 0.003; requestAnimationFrame(start); if (!CURRENT_PIPE || !CURRENT_PIPE.IS_ALIVE) { const PIPE_OPTIONS = { color: PIPE_COLORS[Math.floor(Math.random() * PIPE_COLORS.length)], path: [ { x: randomInRange(-AXIS_LENGTH / 2, AXIS_LENGTH / 2), y: randomInRange(-AXIS_LENGTH / 2, AXIS_LENGTH / 2), z: randomInRange(-AXIS_LENGTH / 2, AXIS_LENGTH / 2) }] }; CURRENT_PIPE = new Pipe(PIPE_OPTIONS); } if (CURRENT_PIPE && CURRENT_PIPE.IS_ALIVE) { CURRENT_PIPE.SHAPE.updatePathCommands(); } }; start();
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>canvas3d管道-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号