8pt

Border Beam Card

流光边框卡片•卡片
介绍

一道光束沿卡片边框循环流动,内容区保持安静。光束是旋转的锥形渐变,只动 transform。

纯 HTML、CSS 与少量原生 JS,没有框架依赖。复制提示词交给 Claude Code、Cursor、Trae 或 Codex,模型会把 Border Beam Card 加进你的项目并换成你的配色。

适用场景

功能介绍、案例与作品、团队成员、文章列表等需要把信息成组展示的区块。

安装

订阅 Builder 后,用 8pt CLI 装进项目,或在已接入 8pt MCP 的编辑器里直接调用。

$ npm i -g @8pt-dev/cli && 8pt add border-beam-card
mcp › 使用 8pt MCP 调用 get_component("border-beam-card")

代码

Border Beam Card 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。

<article class="x-beam">
  <span class="x-beam__ray" aria-hidden="true"></span>
  <div class="x-beam__in">
    <div class="x-beam__head"><span class="x-beam__ic" aria-hidden="true"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v4M12 17v4M3 12h4M17 12h4M6.3 6.3l2.8 2.8M14.9 14.9l2.8 2.8M6.3 17.7l2.8-2.8M14.9 9.1l2.8-2.8"/></svg></span><span class="x-beam__badge">Beta</span></div>
    <h3>Northwind Sync</h3>
    <p>文件改动在三台设备间实时同步。</p>
    <div class="x-beam__foot"><span>延迟 <b>38ms</b></span><button type="button">连接</button></div>
  </div>
</article>
.x-beam{position:relative;overflow:hidden;isolation:isolate;width:min(300px,100%);padding:1.5px;border-radius:18px;background:var(--d-line,rgba(255,255,255,.1));color:var(--d-fg,#fff)}
.x-beam__ray{position:absolute;left:50%;top:50%;width:200%;aspect-ratio:1;z-index:-1;background:conic-gradient(from 0deg,transparent 0 70%,color-mix(in srgb,var(--d-accent,#4D74FF) 30%,transparent) 80%,var(--d-accent,#4D74FF) 90%,#9ef0ff 94%,transparent 97%);transform:translate(-50%,-50%) rotate(0);animation:x-beam 4s linear infinite}
@keyframes x-beam{to{transform:translate(-50%,-50%) rotate(1turn)}}
.x-beam__in{position:relative;padding:20px;border-radius:16.5px;background:var(--d-card,#14141c)}
.x-beam__head{display:flex;justify-content:space-between;align-items:center}
.x-beam__ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--d-accent,#4D74FF) 18%,transparent);color:var(--d-accent,#4D74FF);font-size:15px}
.x-beam__badge{padding:4px 8px;border-radius:999px;border:1px solid var(--d-line,rgba(255,255,255,.12));font:600 11px/1 var(--d-font,system-ui,sans-serif);color:var(--d-muted,#9b9ba8)}
.x-beam h3{margin:14px 0 6px;font:650 17px/1.25 var(--d-font,system-ui,sans-serif);letter-spacing:-.01em}
.x-beam p{margin:0;font:13px/1.55 var(--d-font,system-ui,sans-serif);color:var(--d-muted,#9b9ba8)}
.x-beam__foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;font:12px/1 var(--d-font,system-ui,sans-serif);color:var(--d-muted,#9b9ba8)}
.x-beam__foot b{color:var(--d-fg,#fff);font-variant-numeric:tabular-nums}
.x-beam__foot button{height:30px;padding:0 14px;border:0;border-radius:9px;background:var(--d-fg,#fff);color:var(--d-bg,#000);font:600 12px/1 var(--d-font,system-ui,sans-serif);cursor:pointer;transition:transform .2s}
…
const init = (root) => {
  const b = root.querySelector('.x-beam__foot button'), lat = root.querySelector('.x-beam__foot b');
  let on = false, timer;
  b.addEventListener('click', () => { on = !on; b.textContent = on ? '已连接' : '连接'; clearInterval(timer);
    if (on) timer = setInterval(() => { lat.textContent = (30 + Math.round(Math.random() * 18)) + 'ms'; }, 900); });
  return () => clearInterval(timer);
};
订阅 Builder 查看完整源码。查看价格

更多卡片组件

查看全部

Media Bento Grid

Director Art Cards

Glass Folder

File Preview Cards

Spotlight Card

Card Stack

Bento Grid

Tilt Card

更多组件

查看全部

AI Prompt Composer

Film Strip Carousel

Auto Tab Showcase

Agent Chat Window

Model Pill Marquee

Mac File Window

Disk Cleanup Panel

Shortcut Keycaps

继续探索