8pt

Tabbed Logo Testimonial

标签切换客户证言•文字
介绍

居中标题下一张证言卡:顶部一排虚构品牌标签,当前项下方橙色进度条走完即自动切到下一家;正文大号引言后半句橙色高亮,配署名与立体小物插图;卡片下方灰色字标缓慢横向滚动,悬停暂停。

拆自整页模板 燧云 全球网络平台首页,可以单独使用,也能和同一模板拆出的其他组件拼回整页。

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

适用场景

标题动效、客户证言、强调文案和大字排版。

安装

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

$ npm i -g @8pt-dev/cli && 8pt add suiyun-tab-quote
mcp › 使用 8pt MCP 调用 get_component("suiyun-tab-quote")

代码

Tabbed Logo Testimonial 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。

<div class="x-ltq"><h2>被认真做事的团队信赖</h2><p class="x-ltq__sub">他们把基础设施交给了我们。</p><div class="x-ltq__card"><div class="x-ltq__tabs" role="tablist"><button type="button" class="x-ltq__tab is-on" data-i="0"><i style="background:#4C9A54"></i>栗市<span class="x-ltq__bar"></span></button><button type="button" class="x-ltq__tab" data-i="1"><i style="background:#8E62E0"></i>回声<span class="x-ltq__bar"></span></button><button type="button" class="x-ltq__tab" data-i="2"><i style="background:#3B8DE6"></i>匣递<span class="x-ltq__bar"></span></button><span class="x-ltq__tab x-ltq__tab--mute"><i></i>青苔</span><span class="x-ltq__tab x-ltq__tab--mute"><i></i>云笺</span><span class="x-ltq__tab x-ltq__tab--mute"><i></i>拾贝</span></div><div class="x-ltq__slides"><figure class="x-ltq__slide is-on"><blockquote>“对我们来说,难点从来不是能用多少种复杂技术,<em>而是反过来——燧云帮我们用最简单的办法,做成非常复杂的事。</em>”</blockquote><figcaption><b>林一舟</b>开发效率负责人 · 栗市</figcaption><img src="https://8pt.dev/api/media/23d8db7580fa6e89b75aa9e0.webp" alt=""></figure><figure class="x-ltq__slide"><blockquote>“客服对话一旦卡顿,用户就走了。<em>切到燧云之后,我们终于不用半夜盯着流量曲线了。</em>”</blockquote><figcaption><b>周可</b>平台工程主管 · 回声</figcaption><img src="https://8pt.dev/api/media/a259b87b56ff1c362ac60aa2.webp" alt=""></figure><figure class="x-ltq__slide"><blockquote>“我们的仓配系统要在每个城市都跑得一样快,<em>燧云让这件事从工程难题变成了一行配置。</em>”</blockquote><figcaption><b>许南</b>技术合伙人 · 匣递</figcaption><img src="https://8pt.dev/api/media/6ef20516418938f0f575a948.webp" alt=""></figure></div></div><p class="x-ltq__more">还有更多团队……</p><div class="x-ltq__marq" aria-hidden="true"><div class="x-ltq__track"><span>青苔</span><span>云笺</span><span>拾贝</span><span>山屿</span><span>白鹭</span><span>半岛</span><span>木纹</span><span>潮汐</span><span>北窗</span><span>雾灯</span><span>青苔</span><span>云笺</span><span>拾贝</span><span>山屿</span><span>白鹭</span><span>半岛</span><span>木纹</span><span>潮汐</span><span>北窗</span><span>雾灯</span></div></div></div>
@import url("https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;700&display=swap");.x-ltq{width:100%;max-width:1200px;margin:0 auto;box-sizing:border-box;font-family:"Inter Tight","Noto Sans SC",system-ui,sans-serif;color:#262626;text-align:center}.x-ltq h2{margin:0;font-size:clamp(30px,3.1vw,44px);font-weight:400;letter-spacing:-.015em}.x-ltq__sub{margin:14px 0 30px;font-size:16px;color:#666}.x-ltq__card{width:82%;margin:0 auto;border:1px solid #EBEBEB;background:#fff;text-align:left}.x-ltq__tabs{display:flex;border-bottom:1px solid #EBEBEB;overflow:hidden}.x-ltq__tab{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;flex:1;height:52px;border:0;border-right:1px solid #F2F2F2;background:none;font:inherit;font-size:14px;color:#777;cursor:pointer;transition:color .25s,background .25s}.x-ltq__tab i{width:12px;height:12px;border-radius:4px;background:#cfcfcf}.x-ltq__tab.is-on{color:#1d1d1d;background:#FFFBF6}.x-ltq__tab--mute{cursor:default;opacity:.55}.x-ltq__bar{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:#FF5D1D}.x-ltq__tab.is-on .x-ltq__bar{animation:x-ltq-prog 6s linear forwards}.x-ltq__card:hover .x-ltq__tab.is-on .x-ltq__bar{animation-play-state:paused}.x-ltq__slides{position:relative;height:300px}.x-ltq__slide{position:absolute;inset:0;display:grid;grid-template-columns:1fr 190px;grid-template-rows:1fr auto;gap:10px 40px;margin:0;padding:40px 56px;box-sizing:border-box;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .5s;pointer-events:none}.x-ltq__slide.is-on{opacity:1;transform:none;pointer-events:auto}.x-ltq__slide blockquote{margin:0;align-self:center;font-size:clamp(20px,2vw,27px);line-height:1.38;letter-spacing:-.01em}.x-ltq__slide em{font-style:normal;color:#FF5D1D}.x-ltq__slide figcaption{grid-column:1;font-size:13.5px;color:#666}.x-ltq__slide figcaption b{margin-right:8px;color:#262626;font-weight:500}.x-ltq__slide img{grid-column:2;grid-row:1/3;align-self:center;width:190px;height:190px;border-radius:16px;object-fit:cover;animation:x-ltq-float 6s ease-in-out infinite}.x-ltq__more{margin:34px 0 18px;font-size:14.5px;color:#666}.x-ltq__marq{width:82%;margin:0 auto;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}.x-ltq__track{display:flex;width:max-content;animation:x-ltq-marq 30s linear infinite}.x-ltq__marq:hover .x-ltq__track{animation-play-state:paused}.x-ltq__track span{padding:0 34px;font-size:24px;font-weight:700;letter-spacing:.12em;color:#3a3a3a;white-space:nowrap}.x-ltq__track span:nth-child(3n){font-weight:400;letter-spacing:.3em}.x-ltq__track span:nth-child(4n){color:#777}@keyframes x-ltq-prog{to{width:100%}}@keyframes x-ltq-marq{to{transform:translateX(-50%)}}@keyframes x-ltq-float{50%{transform:translateY(-8px)}}@media (max-width:640px){.x-ltq__card,.x-ltq__marq{width:100%}.x-ltq__tab--mute{display:none}.x-ltq__slides{height:430px}.x-ltq__slide{grid-template-columns:1fr;grid-template-rows:auto auto auto;padding:26px 22px}.x-ltq__slide img{grid-column:1;grid-row:1;width:110px;height:110px}.x-ltq__slide blockquote{font-size:20px}}@media (prefers-reduced-motion:reduce){.x-ltq__track,.x-ltq__slide img,.x-ltq__tab.is-on .x-ltq__bar{animation:none}.x-ltq__tab.is-on .x-ltq__bar{width:100%}.x-ltq__slide{transition:none}}
(root) => {
  const box = root.classList && root.classList.contains("x-ltq") ? root : root.querySelector(".x-ltq");
  if (!box) return;
  const tabs = [...box.querySelectorAll("button.x-ltq__tab")];
  const slides = [...box.querySelectorAll(".x-ltq__slide")];
  const pick = (i) => { tabs.forEach((t, k) => { t.classList.toggle("is-on", k === i); t.setAttribute("aria-selected", k === i ? "true" : "false"); }); slides.forEach((s, k) => s.classList.toggle("is-on", k === i)); };
  const offs = tabs.map((t, i) => { const h = () => pick(i); t.addEventListener("click", h); return () => t.removeEventListener("click", h); });
  const next = (e) => { if (e.animationName && e.animationName.indexOf("x-ltq-prog") > -1) { const i = tabs.findIndex((t) => t.classList.contains("is-on")); pick((i + 1) % tabs.length); } };
  box.addEventListener("animationend", next);
  return () => { offs.forEach((f) => f()); box.removeEventListener("animationend", next); };
}
订阅 Builder 查看完整源码。查看价格

同一模板的其他组件

查看全部

Dot Matrix Glow Hero

Dotted Globe Features

Chaos Versus Ship Split

Segmented Pricing Tiers

Live Deploy Bento

Floating Tile CTA Banner

更多文字组件

查看全部

Serif Statement Hero

Hover Service Index

Three Claim Cards

Hover Preview

Text Scramble

Typewriter Heading

更多组件

查看全部

Dot Matrix Glow Hero

Dotted Globe Features

Chaos Versus Ship Split

Segmented Pricing Tiers

Live Deploy Bento

Floating Tile CTA Banner

Aurora Prompt Hero

Integration Tile Grid

继续探索