8pt

Paywall Flow Strip

付费墙流程条•媒体
介绍

三台手机依次展示欢迎页、提问页与付费墙,上方步骤标签用箭头串起,当前步骤自动轮换并让对应手机轻微上浮,悬停可手动定位。适合讲解引导流程与收费设计。

拆自整页模板 澄榜 应用市场情报首页,可以单独使用,也能和同一模板拆出的其他组件拼回整页。

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

适用场景

图片对比、视频展示、画廊、轮播和媒体卡片。

安装

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

$ npm i -g @8pt-dev/cli && 8pt add paywall-flow-strip
mcp › 使用 8pt MCP 调用 get_component("paywall-flow-strip")

代码

Paywall Flow Strip 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。

<div class="x-pfs"><div class="pfs-sky"><div class="pfs-app"><span class="ic" style="background:#22C55E"><svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 19c0-8 6-14 14-14 0 8-6 14-14 14z"/><path d="M5 19l7-7"/></svg></span><b>轻食记</b><span>— 屏</span></div><div class="pfs-steps"><span class="pfs-lab">欢迎页</span><i class="pfs-arr">→</i><span class="pfs-lab">提问</span><i class="pfs-arr">→</i><span class="pfs-lab">付费墙</span></div><div class="pfs-row"><div class="pfs-ph"><div class="ph-notch"></div><div class="pfs-scr s1"><img src="https://8pt.dev/api/media/bb261f7dbeedbc68bf1caabb.webp" alt=""><b>轻松记录每一餐</b><span></span><span></span><div class="pfs-btn">开始</div></div></div><div class="pfs-ph"><div class="ph-notch"></div><div class="pfs-scr s2"><b>你的目标是?</b><small>为你定制计划</small><div class="pfs-opt">减脂</div><div class="pfs-opt">保持</div><div class="pfs-opt on">增肌</div><div class="pfs-btn">下一步</div></div></div><div class="pfs-ph pfs-pw"><div class="ph-notch"></div><div class="ph-scr"><b>解锁全部计划</b><span class="ph-sub">让目标更快达成</span><div class="ph-ring"><i></i><em>—</em></div><div class="ph-rows"><span></span><span></span><span></span></div><div class="ph-plan on">年度 · 示意价</div><div class="ph-plan">月度</div><div class="ph-btn">继续</div></div></div></div></div></div>
.x-pfs{--ink:#0E1116;--blue:#2F6BEA;--blue2:#5B8DF5;--muted:#667085;--line:#E6E8EE;--soft:#F3F5F9;--bg:#FAFAFB;font-family:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}.x-pfs,.x-pfs *{box-sizing:border-box}.x-pfs a{color:inherit;text-decoration:none}.x-pfs button{font:inherit;cursor:pointer}.x-pfs{width:100%;max-width:980px;margin:0 auto;text-align:left}.x-pfs .pfs-sky{border-radius:20px;overflow:hidden;background:#CFE4FB url(https://8pt.dev/api/media/8d6547efdad29210b7d11a4e.webp) center/cover;padding:56px 6% 0;min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.x-pfs .pfs-app{display:flex;align-items:center;gap:8px;background:#fff;border-radius:999px;padding:5px 14px 5px 6px;font-size:13px;box-shadow:0 4px 14px -6px rgba(30,70,140,.3)}.x-pfs .ic{width:22px;height:22px;border-radius:6px;display:grid;place-items:center}.x-pfs .ic svg{width:12px;height:12px}.x-pfs .pfs-app b{font-weight:600}.x-pfs .pfs-app>span:not(.ic){color:#98A2B3;padding-left:8px;border-left:1px solid var(--line)}.x-pfs .pfs-steps{display:grid;grid-template-columns:118px 24px 118px 24px 118px;gap:8px;align-items:center;margin:22px 0 10px;justify-items:center}.x-pfs .pfs-lab{font-size:11px;color:#475467;background:rgba(255,255,255,.85);padding:4px 10px;border-radius:999px;transition:all .3s}.x-pfs .pfs-lab.on{background:var(--ink);color:#fff}.x-pfs .pfs-arr{font-style:normal;font-size:11px;width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.85);display:grid;place-items:center;color:#475467}.x-pfs .pfs-row{display:grid;grid-template-columns:repeat(3,118px);gap:40px;align-items:start;height:236px;overflow:hidden}.x-pfs .pfs-ph{position:relative;width:118px;height:250px;border-radius:22px;background:#0E1116;padding:5px;box-shadow:0 18px 40px -16px rgba(14,17,22,.45);transition:transform .4s ease}.x-pfs .pfs-ph.on{transform:translateY(-8px)}.x-pfs .pfs-ph .ph-notch{position:absolute;top:9px;left:50%;width:34px;height:8px;margin-left:-17px;border-radius:6px;background:#0E1116;z-index:2}.x-pfs .pfs-scr{height:100%;border-radius:18px;background:#fff;padding:22px 9px 9px;display:flex;flex-direction:column;gap:6px;overflow:hidden;font-size:8px}.x-pfs .pfs-scr b{font-size:10px;font-weight:600}.x-pfs .pfs-scr small{font-size:7px;color:#98A2B3}.x-pfs .s1 img{width:100%;height:92px;object-fit:cover;border-radius:10px}.x-pfs .s1 span{height:5px;border-radius:3px;background:#EEF1F6}.x-pfs .pfs-opt{border:1px solid var(--line);border-radius:6px;padding:5px 7px;color:#475467}.x-pfs .pfs-opt.on{background:var(--ink);color:#fff;border-color:var(--ink)}.x-pfs .pfs-btn{margin-top:auto;text-align:center;color:#fff;background:#0E1116;border-radius:7px;padding:5px 0}@media (max-width:640px){.x-pfs .pfs-steps{grid-template-columns:86px 18px 86px 18px 86px;gap:4px}.x-pfs .pfs-row{grid-template-columns:repeat(3,86px);gap:22px;height:180px}.x-pfs .pfs-row>div{transform:scale(.73);transform-origin:top left}.x-pfs .pfs-row>div.on{transform:scale(.73) translateY(-8px)}.x-pfs .pfs-sky{min-height:0;padding-top:36px}}@media (prefers-reduced-motion:reduce){.x-pfs *{transition:none!important}}.x-pfs .pfs-pw{position:relative;width:118px;height:236px;border-radius:22px;background:#0E1116;padding:5px;box-shadow:0 18px 40px -16px rgba(14,17,22,.45)}.x-pfs .pfs-pw .ph-notch{position:absolute;top:9px;left:50%;width:34px;height:8px;margin-left:-17px;border-radius:6px;background:#0E1116;z-index:2}.x-pfs .pfs-pw .ph-scr{height:100%;border-radius:18px;background:#fff;padding:22px 9px 9px;display:flex;flex-direction:column;align-items:center;gap:5px;overflow:hidden}.x-pfs .pfs-pw b{font-size:10px;font-weight:600;color:#0E1116}.x-pfs .pfs-pw .ph-sub{font-size:7px;color:#98A2B3}.x-pfs .pfs-pw .ph-ring{position:relative;width:46px;height:46px;border-radius:50%;background:conic-gradient(#2F6BEA 0 68%,#E6E8EE 0);display:grid;place-items:center;margin:3px 0}.x-pfs .pfs-pw .ph-ring i{position:absolute;inset:6px;border-radius:50%;background:#fff}.x-pfs .pfs-pw .ph-ring em{position:relative;font-style:normal;font-size:9px;font-weight:600}.x-pfs .pfs-pw .ph-rows{width:100%;display:grid;gap:3px}.x-pfs .pfs-pw .ph-rows span{height:5px;border-radius:3px;background:#EEF1F6}.x-pfs .pfs-pw .ph-rows span:nth-child(2){width:80%}.x-pfs .pfs-pw .ph-plan{width:100%;font-size:7px;padding:4px 6px;border:1px solid #E6E8EE;border-radius:6px;color:#475467}.x-pfs .pfs-pw .ph-plan.on{border-color:#2F6BEA;color:#2F6BEA;background:#EEF4FF}.x-pfs .pfs-pw .ph-btn{margin-top:auto;width:100%;text-align:center;font-size:8px;color:#fff;background:#0E1116;border-radius:7px;padding:5px 0}.x-pfs{max-width:none;padding:64px 6%;background-image:radial-gradient(rgba(16,24,40,.14) 1.1px,transparent 1.4px);background-size:18px 18px;background-position:center}.x-pfs .pfs-sky{max-width:860px;margin:0 auto}
(root) => {
  const labs = [...root.querySelectorAll('.pfs-lab')];
  const phs = [...root.querySelectorAll('.pfs-row > div')];
  let i = 2;
  const show = (k) => { labs.forEach((l, j) => l.classList.toggle('on', j === k)); phs.forEach((p, j) => p.classList.toggle('on', j === k)); };
  show(i);
  const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  const id = reduce ? 0 : setInterval(() => { i = (i + 1) % 3; show(i); }, 1800);
  const onEnter = (e) => { const k = phs.indexOf(e.currentTarget); if (k > -1) { i = k; show(k); } };
  phs.forEach(p => p.addEventListener('mouseenter', onEnter));
  return () => { clearInterval(id); phs.forEach(p => p.removeEventListener('mouseenter', onEnter)); };
}
订阅 Builder 查看完整源码。查看价格

同一模板的其他组件

查看全部

Fading Quote Wall

Dual Plan Pricing

Four Answer Window

Idea Search Marquee

Ask AI Composer

Rounded FAQ Stack

Top Apps Toggle Board

更多媒体组件

查看全部

Crossfade Media Stage

Tinted Team Cards

Kanban Window Mock

Hover Reveal Work Grid

Template Card Grid

Gallery Lightbox Stage

Infinite Drag Wall

Library Browser Mock

更多组件

查看全部

Tabbed Logo Testimonial

Dot Matrix Glow Hero

Dotted Globe Features

Chaos Versus Ship Split

Segmented Pricing Tiers

Live Deploy Bento

Floating Tile CTA Banner

Aurora Prompt Hero

继续探索