PG10▸📐 Layout · 版型▸Marquee
Marquee Logos
跑馬燈品牌列
難度 ★★★★★標籤 marquee · infinite · apple2 min read
模式簡述
Marquee:無限跑馬燈式 logo 牆。Vercel、Stripe 客戶列都用。比靜態 logo grid 多了動態感。
◆ Apple◆ Linear◆ Vercel◆ Notion◆ Figma◆ Stripe◆ GitHub◆ Cloudflare◆ Apple◆ Linear◆ Vercel◆ Notion◆ Figma◆ Stripe◆ GitHub◆ Cloudflare
Claude Code Prompt
參考:PG10 marquee 組件:Marquee.tsx Marquee:無限跑馬燈式 logo 牆。Vercel、Stripe 客戶列都用。比靜態 logo grid 多了動態感。 限制: - 速度太快 - 邊緣沒做 fade - hover 沒暫停
完整程式碼
"use client";
type State = "single" | "reverse" | "double";
const LOGOS = ["Apple", "Linear", "Vercel", "Notion", "Figma", "Stripe", "GitHub", "Cloudflare"];
function Row({ reverse = false, duration = 20 }: { reverse?: boolean; duration?: number }) {
return (
<div className="relative overflow-hidden">
<div
className="flex gap-10 whitespace-nowrap py-3"
style={{
animation: `marquee ${duration}s linear infinite ${reverse ? "reverse" : ""}`,
}}
>
{[...LOGOS, ...LOGOS].map((l, i) => (
<span
key={i}
className="font-mono text-base tracking-tight text-muted-foreground/70"
>
◆ {l}
</span>
))}
</div>
</div>
);
}
export function Marquee({ state = "single" }: { state?: State }) {
return (
<div className="relative w-full overflow-hidden rounded-xl border border-border bg-background/30">
<div className="pointer-events-none absolute inset-y-0 left-0 z-10 w-12 bg-gradient-to-r from-background to-transparent" />
<div className="pointer-events-none absolute inset-y-0 right-0 z-10 w-12 bg-gradient-to-l from-background to-transparent" />
<Row duration={state === "reverse" ? 25 : 20} reverse={state === "reverse"} />
{state === "double" && <Row duration={30} reverse />}
<style jsx>{`
@keyframes marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
`}</style>
</div>
);
}何時用
- ✅ 客戶 logo wall
- ✅ 社群引言滾動
- ✅ 服務技術棧展示
何時別用
- ❌ 重要資訊(跑來跑去讀不到)
- ❌ 資訊量大(一行塞不下,分行就破壞了)
- ❌ 視差敏感者多的網站
我踩過的坑
-
速度太快:< 15s 一輪會頭暈。20-30s 比較舒服。
-
邊緣沒做 fade:logo 突然冒出來。兩邊加 gradient mask。
-
hover 沒暫停:使用者想看清某個 logo 沒辦法。hover 暫停。
相關模式
- PG05
- PC06