Infra Tab Showcase
介绍
深色面板:左侧手风琴列表点开显示说明,右侧对应切换五种动态画面——发光浏览器与节点连线、服务图标网格、旋转线框地球与弧线、浮动徽章、笔记本与手机样机,自动轮播。
拆自整页模板 念成 AI 应用构建器首页,可以单独使用,也能和同一模板拆出的其他组件拼回整页。
纯 HTML、CSS 与少量原生 JS,没有框架依赖。复制提示词交给 Claude Code、Cursor、Trae 或 Codex,模型会把 Infra Tab Showcase 加进你的项目并换成你的配色。
适用场景
滚动、悬停与入场动效,给页面增加节奏感;动效只用 transform 和 opacity。
安装
订阅 Builder 后,用 8pt CLI 装进项目,或在已接入 8pt MCP 的编辑器里直接调用。
$ npm i -g @8pt-dev/cli && 8pt add infra-tab-showcase
mcp › 使用 8pt MCP 调用 get_component("infra-tab-showcase")
代码
Infra Tab Showcase 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。
<section class="x-bis"><div class="bis-l"><h2>为构建,也为之后</h2><p>念成运行在企业级基础设施上,你做出的全栈软件可以放心扩展。</p><div class="bis-list"><button type="button" class="bis-it on" data-i="0"><b>托管,交给我们</b><span>托管、证书和后端基础设施都由念成照看。代码和数据始终属于你。</span></button><button type="button" class="bis-it" data-i="1"><b>应用栈,一键连通</b><span>表格、邮件、数据库和常用服务,点几下就接进你的应用。</span></button><button type="button" class="bis-it" data-i="2"><b>收款,随时就绪</b><span>接入收款与订阅,从第一位用户开始就能收钱。</span></button><button type="button" class="bis-it" data-i="3"><b>安全,是默认配置</b><span>加密、权限隔离与操作审计开箱即用,不必另外配置。</span></button><button type="button" class="bis-it" data-i="4"><b>随时随地,都能用</b><span>网页、平板与手机自动适配,在哪儿打开都顺手。</span></button></div></div><div class="bis-r"><div class="bis-v on" data-i="0"><div class="bv bv-host"><span class="bh-glow"></span><svg class="bh-ln" viewBox="0 0 600 300" preserveAspectRatio="none"><path id="bhP" d="M70 165 C150 165 160 150 200 150 S 260 170 300 172 S 360 150 400 150 S 470 165 530 165" fill="none" stroke="rgba(255,255,255,.18)" stroke-width="1.2"/><circle r="3" fill="#fff"><animateMotion dur="5s" repeatCount="indefinite"><mpath href="#bhP"/></animateMotion></circle></svg><div class="bh-win"><div class="bh-bar"><i></i><i></i><i></i><span><svg viewBox="0 0 24 24" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg>orbit.example.com</span><b></b><b></b></div><div class="bh-body"></div></div><span class="bh-n n1"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg></span><span class="bh-n n2"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="5" r="2"/><circle cx="6" cy="19" r="2"/><circle cx="18" cy="8" r="2"/><path d="M6 7v10M18 10c0 4-6 3-11 7"/></svg></span><span class="bh-n n3 big"><svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M7 18h10a4 4 0 0 0 .5-8A6 6 0 0 0 6 9.5 4.3 4.3 0 0 0 7 18z"/></svg></span><span class="bh-n n4"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="15" r="4"/><path d="M11 12l8-8M16 7l2 2"/></svg></span><span class="bh-n n5"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="6" rx="7" ry="3"/><path d="M5 6v12c0 1.7 3 3 7 3s7-1.3 7-3V6M5 12c0 1.7 3 3 7 3s7-1.3 7-3"/></svg></span></div></div><div class="bis-v" data-i="1"><div class="bv bv-grid"><div class="ig-g"><span class="ig-t" style="--c:#1F9D55" data-n="表格"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 10h18M9 10v10"/></svg></span><span class="ig-t" style="--c:#E5484D" data-n="邮件"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/></svg></span><span class="ig-t" style="--c:#635BFF" data-n="收款"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18"/></svg></span><span class="ig-t" style="--c:#3ECF8E" data-n="数据库"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="6" rx="7" ry="3"/><path d="M5 6v12c0 1.7 3 3 7 3s7-1.3 7-3V6M5 12c0 1.7 3 3 7 3s7-1.3 7-3"/></svg></span><span class="ig-t" style="--c:#7C66DC" data-n="群聊"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16v11H9l-5 4z"/></svg></span><span class="ig-t" style="--c:#2F80ED" data-n="日历"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="5" width="16" height="15" rx="2"/><path d="M4 10h16M9 3v4M15 3v4"/></svg></span><span class="ig-t" style="--c:#38BDF8" data-n="云盘"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M7 18h10a4 4 0 0 0 .5-8A6 6 0 0 0 6 9.5 4.3 4.3 0 0 0 7 18z"/></svg></span><span class="ig-t" style="--c:#F5A524" data-n="自动化"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 3L5 14h6l-1 7 8-11h-6z"/></svg></span><span class="ig-t" style="--c:#F59E0B" data-n="文件"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h6l2 2h10v11H3z"/></svg></span><span class="ig-t" style="--c:#10B981" data-n="地图"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4l6 2 6-2v14l-6 2-6-2-6 2V6z"/><path d="M9 4v14M15 6v14"/></svg></span><span class="ig-t" style="--c:#95BF47" data-n="店铺"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4h2l2 11h11l2-8H6"/><circle cx="9" cy="19" r="1.4"/><circle cx="17" cy="19" r="1.4"/></svg></span><span class="ig-t" style="--c:#EF4444" data-n="通知"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M6 16V11a6 6 0 0 1 12 0v5l2 2H4z"/><path d="M10 20h4"/></svg></span><span class="ig-t" style="--c:#111827" data-n="文档"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20l4-1 11-11-3-3L5 16z"/></svg></span><span class="ig-t" style="--c:#EC4899" data-n="音频"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="17" cy="16" r="3"/></svg></span><span class="ig-t" style="--c:#FF4D4F" data-n="视频"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="6" width="13" height="12" rx="2"/><path d="M16 10l5-3v10l-5-3"/></svg></span><span class="ig-t" style="--c:#8B5CF6" data-n="仓储"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7l9-4 9 4v10l-9 4-9-4z"/><path d="M3 7l9 4 9-4M12 11v10"/></svg></span><span class="ig-t" style="--c:#0EA5E9" data-n="分析"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19h16"/><path d="M6 15l4-5 3 3 5-7"/></svg></span><span class="ig-t ig-c"><span class="lg"><svg viewBox="0 0 32 32"><defs><linearGradient id="lgG" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#FF7A1A"/><stop offset=".5" stop-color="#FF3D8B"/><stop offset="1" stop-color="#7B61FF"/></linearGradient></defs><path d="M6 4h12a10 10 0 0 1 10 10v4a10 10 0 0 1-10 10H10a6 6 0 0 1-6-6V6a2 2 0 0 1 2-2z" fill="url(#lgG)"/><path d="M15.5 9l1.6 4.4 4.4 1.6-4.4 1.6-1.6 4.4-1.6-4.4-4.4-1.6 4.4-1.6z" fill="#fff"/></svg></span></span><span class="ig-t" style="--c:#2563EB" data-n="检索"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="6.5"/><path d="M20 20l-4-4"/></svg></span><span class="ig-t" style="--c:#D97757" data-n="智能体"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="8" width="14" height="11" rx="3"/><path d="M12 4v4M9 13h.01M15 13h.01"/></svg></span><span class="ig-t" style="--c:#24292F" data-n="代码库"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 8l-4 4 4 4M15 8l4 4-4 4"/></svg></span><span class="ig-t" style="--c:#64748B" data-n="登录"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg></span><span class="ig-t" style="--c:#F43F5E" data-n="会员"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20s-7-4.5-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.5-7 10-7 10z"/></svg></span><span class="ig-t" style="--c:#22C55E" data-n="短信"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="3" width="10" height="18" rx="2"/><path d="M11 18h2"/></svg></span><span class="ig-t" style="--c:#A855F7" data-n="生成"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v5M12 16v5M3 12h5M16 12h5M6 6l3 3M15 15l3 3M18 6l-3 3M9 15l-3 3"/></svg></span><span class="ig-t" style="--c:#0EA5E9" data-n="网络钩子"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="7" r="2.3"/><circle cx="18" cy="17" r="2.3"/><circle cx="18" cy="6" r="2.3"/><path d="M8.2 7.5l7.6-1M8 8.6l8.4 6.8"/></svg></span><span class="ig-t" style="--c:#3B82F6" data-n="域名"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c3 3 3 15 0 18M12 3c-3 3-3 15 0 18"/></svg></span><span class="ig-t" style="--c:#EAB308" data-n="密钥"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="15" r="4"/><path d="M11 12l8-8M16 7l2 2"/></svg></span><span class="ig-t" style="--c:#6366F1" data-n="设计稿"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l9 5-9 5-9-5z"/><path d="M3 13l9 5 9-5"/></svg></span><span class="ig-t" style="--c:#94A3B8" data-n="表单"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3h8l4 4v14H6z"/><path d="M14 3v4h4"/></svg></span><span class="ig-t" style="--c:#14B8A6" data-n="监控"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></svg></span><span class="ig-t" style="--c:#06B6D4" data-n="客服"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16v11H9l-5 4z"/></svg></span><span class="ig-t" style="--c:#F97316" data-n="预约"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="5" width="16" height="15" rx="2"/><path d="M4 10h16M9 3v4M15 3v4"/></svg></span><span class="ig-t" style="--c:#84CC16" data-n="报表"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 10h18M9 10v10"/></svg></span><span class="ig-t" style="--c:#A3A3A3" data-n="订阅"><svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/></svg></span></div></div></div><div class="bis-v" data-i="2"><div class="bv bv-globe"><canvas class="glb" aria-hidden="true"></canvas><span class="bg-glow"></span></div></div><div class="bis-v" data-i="3"><div class="bv bv-badge"><i class="bb-l l1"></i><i class="bb-l l2"></i><i class="bb-l l3"></i><span class="bb b0"><b>加密</b><small>存储</small></span><span class="bb b1"><b>隔离</b><small>权限</small></span><span class="bb b2"><b>审计</b><small>日志</small></span><span class="bb b3"><b>备份</b><small>每日</small></span><span class="bg-glow"></span></div></div><div class="bis-v" data-i="4"><div class="bv bv-dev"><div class="bd-lap"><div class="bd-scr"><img src="https://8pt.dev/api/media/b3cefd20b35a4a148be85c86.webp" alt="" loading="lazy"></div><div class="bd-base"></div></div><div class="bd-ph"><div class="bd-ps"><img src="https://8pt.dev/api/media/28d90dbb2e5b1b652360ac32.webp" alt="" loading="lazy"></div></div><span class="bg-glow"></span></div></div></div></section>
.x-bis{--ink:#1C1C1A;--mut:#5F5F5B;--line:#E9E7E1;--cream:#FCFBF8;--card:#F5F4EF;--blue:#4C7DFF;--pink:#FF66CC;--red:#FF2E63;--org:#FF7A1A;font-family:"Inter","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-align:left;color:var(--ink)}.x-bis,.x-bis *{box-sizing:border-box}.x-bis a{color:inherit;text-decoration:none}.x-bis button{font:inherit;cursor:pointer;color:inherit}.x-bis img{display:block;max-width:100%}.x-bis .lg{display:inline-block;width:24px;height:24px;flex:none}.x-bis .lg svg{width:100%;height:100%;display:block}.x-bis .ig-g{display:grid;grid-template-columns:repeat(7,64px);gap:14px;justify-content:center;-webkit-mask-image:radial-gradient(closest-side,#000 45%,rgba(0,0,0,.35) 75%,transparent);mask-image:radial-gradient(closest-side,#000 45%,rgba(0,0,0,.35) 75%,transparent)}.x-bis .ig-t{position:relative;width:64px;height:64px;border-radius:16px;display:grid;place-items:center;color:var(--c);background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);transition:transform .3s,background .3s,box-shadow .3s}.x-bis .ig-t:hover,.x-bis .ig-t.pulse{transform:translateY(-3px);background:rgba(255,255,255,.1);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 10px 30px -8px var(--c)}.x-bis .ig-t:hover::after{content:attr(data-n);position:absolute;bottom:-26px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;color:#ddd;background:#2a2a2a;padding:2px 8px;border-radius:6px;z-index:2}.x-bis .ig-c{background:linear-gradient(160deg,#FF8A3D,#FF3D8B 55%,#7B61FF);box-shadow:0 0 0 1px rgba(255,255,255,.25) inset,0 0 50px -6px rgba(255,61,139,.8);transform:scale(1.12)}.x-bis .ig-c .lg{width:36px;height:36px}.x-bis .ig-c .lg path:first-child{fill:#fff}.x-bis .ig-c .lg path:last-child{fill:#FF3D8B}@media (max-width:640px){.x-bis .ig-g{grid-template-columns:repeat(7,40px);gap:8px}.x-bis .ig-t{width:40px;height:40px;border-radius:11px}.x-bis .ig-t svg{width:18px;height:18px}.x-bis .ig-c .lg{width:24px;height:24px}}.x-bis .bv{position:relative;height:100%;overflow:hidden;border-radius:14px;background:radial-gradient(90% 70% at 50% 40%,#25262B,#17181B);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}.x-bis .bg-glow{position:absolute;left:-10%;right:-10%;bottom:-38%;height:60%;border-radius:50%;background:radial-gradient(closest-side,#9FB7FF,#4C6FFF 40%,rgba(255,102,204,.5) 70%,transparent);filter:blur(20px);opacity:.85;pointer-events:none}.x-bis .bv-host{background:linear-gradient(180deg,#1E2230,#1A1B22)}.x-bis .bh-glow{position:absolute;left:30%;right:30%;top:30%;bottom:20%;background:radial-gradient(closest-side,rgba(255,61,139,.35),transparent);filter:blur(20px)}.x-bis .bh-ln{position:absolute;inset:0;width:100%;height:100%}.x-bis .bh-win{position:absolute;left:26%;right:26%;top:22%;bottom:18%;border-radius:16px;background:rgba(40,42,50,.75);box-shadow:0 0 0 1.5px #5B8CFF,0 0 0 3px rgba(255,61,139,.35),0 20px 50px -10px rgba(255,61,139,.55);padding:8px}.x-bis .bh-bar{display:flex;align-items:center;gap:5px;height:22px;color:#aaa;font-size:10px}.x-bis .bh-bar i{width:7px;height:7px;border-radius:50%;background:#555}.x-bis .bh-bar span{flex:1;margin:0 10px;display:flex;align-items:center;justify-content:center;gap:4px;height:18px;border-radius:6px;background:#3a3c44}.x-bis .bh-bar b{width:14px;height:14px;border-radius:50%;background:#3a3c44}.x-bis .bh-body{position:absolute;left:8px;right:8px;top:36px;bottom:8px;border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}.x-bis .bh-n{position:absolute;top:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;display:grid;place-items:center;color:#e6e6e6;background:radial-gradient(circle at 35% 30%,#5a5c66,#2b2c33);box-shadow:0 0 0 1px rgba(255,255,255,.12),0 6px 18px rgba(0,0,0,.4);animation:bisF 4s ease-in-out infinite}.x-bis .bh-n.big{width:52px;height:52px;margin:-14px 0 0 -26px}.x-bis .n1{left:12%}.x-bis .n2{left:33%}.x-bis .n3{left:50%}.x-bis .n4{left:67%}.x-bis .n5{left:88%}.x-bis .n2,.x-bis .n4{animation-delay:-1.5s}.x-bis .n3{animation-delay:-.8s}@keyframes bisF{50%{transform:translateY(-5px)}}.x-bis .bv-grid{display:grid;place-items:center;background:#1B1C1F}.x-bis .bv-globe{background:#18191C}.x-bis .glb{position:absolute;left:0;top:0;width:100%;height:100%}.x-bis .bv-badge{background:#1B1C1F}.x-bis .bb-l{position:absolute;top:0;bottom:0;border-left:1px dashed rgba(255,255,255,.12)}.x-bis .l1{left:30%}.x-bis .l2{left:50%}.x-bis .l3{left:70%}.x-bis .bb{position:absolute;width:86px;height:86px;margin:-43px 0 0 -43px;border-radius:50%;display:grid;place-content:center;text-align:center;color:#eee;background:radial-gradient(circle at 40% 30%,#4a4b52,#26272c);box-shadow:0 0 0 2px #2c2d33,0 0 0 3.5px rgba(255,79,163,.6),0 0 0 5px rgba(91,140,255,.5),0 12px 30px rgba(0,0,0,.5);z-index:1;animation:bisF 5s ease-in-out infinite}.x-bis .bb b{font-size:19px;font-weight:700;letter-spacing:.06em}.x-bis .bb small{font-size:10px;letter-spacing:.2em;color:#aaa;margin-top:2px}.x-bis .b0{left:50%;top:20%}.x-bis .b1{left:30%;top:42%;animation-delay:-1.2s}.x-bis .b2{left:70%;top:42%;animation-delay:-2.4s}.x-bis .b3{left:50%;top:64%;animation-delay:-3.6s}.x-bis .bv-dev{background:#1B1C1F}.x-bis .bd-lap{position:absolute;left:14%;width:56%;top:14%;z-index:1}.x-bis .bd-scr{aspect-ratio:16/10.4;border-radius:12px 12px 0 0;padding:8px;background:#2E2F35;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 0 0 1px rgba(91,140,255,.35)}.x-bis .bd-scr img{width:100%;height:100%;object-fit:cover;object-position:top;border-radius:5px;opacity:.85}.x-bis .bd-base{height:10px;margin:0 -8%;border-radius:0 0 10px 10px;background:linear-gradient(180deg,#45464d,#2a2b30);box-shadow:0 8px 24px rgba(91,140,255,.35)}.x-bis .bd-ph{position:absolute;left:62%;width:17%;top:27%;z-index:2;aspect-ratio:9/18;border-radius:18px;padding:6px;background:#2E2F35;box-shadow:0 0 0 1.5px #7B8CFF,0 0 0 3px rgba(255,79,163,.45),0 16px 40px rgba(255,79,163,.35)}.x-bis .bd-ps{width:100%;height:100%;border-radius:12px;overflow:hidden}.x-bis .bd-ps img{width:100%;height:100%;object-fit:cover}.x-bis{display:grid;grid-template-columns:minmax(240px,300px) 1fr;gap:48px;width:100%;max-width:1360px;margin:0 auto;padding:56px 40px;background:#1C1C1C;color:#fff;border-radius:22px}.x-bis h2{margin:0 0 14px;font-size:clamp(26px,2.6vw,32px);font-weight:600;letter-spacing:-.03em;line-height:1.2}.x-bis .bis-l>p{margin:0 0 30px;font-size:15px;line-height:1.65;color:#BDBDB8}.x-bis .bis-it{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid rgba(255,255,255,.12);background:transparent;color:#fff;padding:14px 0}.x-bis .bis-it b{display:block;font-size:14px;font-weight:500}.x-bis .bis-it span{display:block;max-height:0;overflow:hidden;opacity:0;font-size:12.5px;line-height:1.6;color:#BDBDB8;transition:max-height .4s,opacity .4s,margin .4s}.x-bis .bis-it.on span{max-height:80px;opacity:1;margin-top:8px}.x-bis .bis-it:not(.on) b{color:#D6D6D1}.x-bis .bis-it:hover b{color:#fff}.x-bis .bis-r{position:relative;height:500px}.x-bis .bis-v{position:absolute;inset:0;opacity:0;transform:scale(.98);transition:opacity .6s,transform .6s;pointer-events:none}.x-bis .bis-v.on{opacity:1;transform:none;pointer-events:auto}.x-bis.is-stack .bis-l{position:sticky;top:96px;align-self:start}.x-bis.is-stack .bis-r{height:auto;display:grid;gap:12px}.x-bis.is-stack .bis-v{position:relative;inset:auto;height:500px;opacity:1;transform:none;pointer-events:auto}@media (max-width:900px){.x-bis{grid-template-columns:1fr;padding:40px 18px;gap:28px}.x-bis .bis-r,.x-bis.is-stack .bis-v{height:360px}.x-bis.is-stack .bis-l{position:static}}@media (prefers-reduced-motion:reduce){.x-bis *,.x-bis *::before,.x-bis *::after{animation:none!important;transition:none!important}}.x-bis{max-width:none;background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1.4px);background-size:16px 16px}.x-bis{width:1120px;max-width:100%;box-sizing:border-box}(root) => {const gridPulse=(g)=>{const ts=[...g.querySelectorAll('.ig-t:not(.ig-c)')];let k=0;const red=matchMedia('(prefers-reduced-motion: reduce)').matches;if(red)return ()=>{};const iv=setInterval(()=>{ts.forEach(t=>t.classList.remove('pulse'));const near=[9,10,11,16,18,23,24,25];const t=ts[near[k++%near.length]];if(t)t.classList.add('pulse')},1100);return ()=>clearInterval(iv)};const drawGlobe=(cv)=>{const ctx=cv.getContext('2d');const N=220,P=[],E=[];const ga=Math.PI*(3-Math.sqrt(5));for(let i=0;i<N;i++){const y=1-(i/(N-1))*2,r=Math.sqrt(1-y*y),t=ga*i;P.push([Math.cos(t)*r,y,Math.sin(t)*r])}
for(let i=0;i<N;i++)for(let j=i+1;j<N;j++){const dx=P[i][0]-P[j][0],dy=P[i][1]-P[j][1],dz=P[i][2]-P[j][2];if(dx*dx+dy*dy+dz*dz<0.058)E.push([i,j])}
const ll=(la,lo)=>{la*=Math.PI/180;lo*=Math.PI/180;return [Math.cos(la)*Math.cos(lo),Math.sin(la),Math.cos(la)*Math.sin(lo)]};const A=ll(28,-60),B=ll(-12,40);
let W=0,H=0,dpr=1,raf,a=0,prog=0;const red=matchMedia('(prefers-reduced-motion: reduce)').matches;
const fit=()=>{dpr=Math.min(2,devicePixelRatio||1);W=cv.clientWidth;H=cv.clientHeight;cv.width=W*dpr;cv.height=H*dpr};fit();const ro=new ResizeObserver(fit);ro.observe(cv);
const rot=(p)=>{const c=Math.cos(a),s=Math.sin(a),t=0.32,ct=Math.cos(t),st=Math.sin(t);let x=p[0]*c-p[2]*s,z=p[0]*s+p[2]*c,y=p[1];const y2=y*ct-z*st,z2=y*st+z*ct;return [x,y2,z2]};
const frame=()=>{ctx.setTransform(dpr,0,0,dpr,0,0);ctx.clearRect(0,0,W,H);const R=Math.min(W,H)*0.42,cx=W/2,cy=H/2;const Q=P.map(rot);
ctx.lineWidth=0.6;for(const [i,j] of E){const z=(Q[i][2]+Q[j][2])/2;ctx.strokeStyle='rgba(200,210,255,'+(0.05+0.22*(z+1)/2)+')';ctx.beginPath();ctx.moveTo(cx+Q[i][0]*R,cy-Q[i][1]*R);ctx.lineTo(cx+Q[j][0]*R,cy-Q[j][1]*R);ctx.stroke()}
for(const q of Q){const z=(q[2]+1)/2;ctx.fillStyle='rgba(255,255,255,'+(0.15+0.85*z)+')';ctx.beginPath();ctx.arc(cx+q[0]*R,cy-q[1]*R,0.6+1.4*z,0,7);ctx.fill()}
const a1=rot(A),b1=rot(B);const pts=[];for(let k=0;k<=40;k++){const t=k/40;let x=a1[0]*(1-t)+b1[0]*t,y=a1[1]*(1-t)+b1[1]*t,z=a1[2]*(1-t)+b1[2]*t;const l=Math.hypot(x,y,z)||1,h=1+0.25*Math.sin(Math.PI*t);pts.push([cx+x/l*h*R,cy-y/l*h*R])}
const n=Math.max(2,Math.min(41,Math.floor(prog*40)));const gr=ctx.createLinearGradient(pts[0][0],pts[0][1],pts[40][0],pts[40][1]);gr.addColorStop(0,'#FF4FA3');gr.addColorStop(1,'#5B8CFF');ctx.strokeStyle=gr;ctx.lineWidth=2.2;ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(let k=1;k<n;k++)ctx.lineTo(pts[k][0],pts[k][1]);ctx.stroke();
for(const [p,c] of [[pts[0],'#FF4FA3'],[pts[n-1],'#5B8CFF']]){ctx.fillStyle=c;ctx.beginPath();ctx.arc(p[0],p[1],4,0,7);ctx.fill();ctx.strokeStyle='rgba(255,255,255,.9)';ctx.lineWidth=1.5;ctx.stroke()}
…订阅 Builder 查看完整源码。查看价格