CSS 价格表生成器
价格表是营销页面上最关键的一块版面:它必须清晰、便于快速扫读,并把访客引向企业最希望他们选择的套餐。这个生成器会用 HTML + CSS 生成一张价格卡片,包含套餐名称、价格,以及用于价格文字和行动按钮的强调色。把多张卡片并排摆放即可组成完整的价格表,然后把代码复制到落地页。
如何做一个价格表
-
1
输入套餐名称
显示在卡片顶部的套餐标题,例如“Pro”。
-
2
设置价格
以大号字体显示的价格,例如“$29”。“/mo”后缀会自动添加。
-
3
选择强调色
用于价格文字和行动按钮。请选择与品牌匹配的颜色。
-
4
复制代码
卡片自带功能列表、行动按钮和 <style> 样式块。可直接在代码中修改这些内容。
-
5
为更多套餐重复
要制作完整的价格表,请为每个套餐复制一张卡片,并以网格排列。
基础骨架结构
<section class="pricing">
<article class="plan">
<h3>Starter</h3>
<p class="price">$9 <span>/mo</span></p>
<p class="tagline">For solo projects.</p>
<ul class="features">
<li>3 projects</li>
<li>10 GB storage</li>
<li>Community support</li>
</ul>
<a class="cta" href="#">Start free</a>
</article>
<article class="plan featured">
<span class="badge">Most popular</span>
<h3>Pro</h3>
<p class="price">$29 <span>/mo</span></p>
<!-- ... -->
</article>
<article class="plan">
<h3>Team</h3>
<!-- ... -->
</article>
</section>
响应式三列网格
.pricing {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1.5rem;
align-items: stretch;
}
.plan {
padding: 2rem 1.5rem;
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
display: flex;
flex-direction: column;
}
.plan.featured {
border: 2px solid #2563eb;
position: relative;
transform: translateY(-4px);
box-shadow: 0 10px 30px rgba(37, 99, 235, 0.15);
}
auto-fit 搭配 minmax(240px, 1fr),桌面端自动排成三列,移动端自动堆叠成一列,不需要再做任何配置。
推荐套餐
能吸引注意力的视觉线索:
- 彩色边框,与品牌主色保持一致。
- 略微上移,用负的 margin-top 或
translateY(-4px)实现。 - 更大的 CTA 按钮,通常用品牌色填充,其他套餐则用描边按钮。
- 角标(“最受欢迎”“最超值”)用绝对定位放在卡片顶部。
- 卡片更高,可以吸引视线,但会削弱套餐之间的可比性。
不要把上面这些全用上,挑两三个就够了。线索太多,视觉层级反而被拉平。
月付 / 年付切换
<div class="billing-toggle">
<button data-active="true">Monthly</button>
<button>Annual · Save 20%</button>
</div>
切换开关通常靠一小段 JavaScript 来替换价格数值,也可以借助单选按钮(radio)的 :checked 状态实现。记得把折扣百分比或能省下的金额直接写进按钮文案里,在很多价格表中,这是最具说服力的一个元素。
功能行的样式
.features {
list-style: none;
padding: 0;
margin: 1.5rem 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.features li {
display: flex;
align-items: center;
gap: 0.5rem;
}
.features li.yes::before {
content: "";
width: 16px; height: 16px;
background: url(...check.svg);
}
.features li.no {
color: #9ca3af;
text-decoration: line-through;
}
“包含”的功能用对勾,“不包含”的功能用灰色文字或浅色叉号。不要在不降低对比度的情况下直接给文字加删除线,否则它读起来更像是强调而不是排除。
让 CTA 保持醒目
每个套餐一个 CTA,各套餐之间视觉上保持一致。不同套餐用不同文案(“免费开始”“升级到 Pro”“联系销售”)完全没问题,反而更能把用户引导到正确的流程里。
让它便于扫读
用户很少从左到右逐字读价格表:他们先扫价格,再看 CTA,最后才比功能差异。按这个顺序去优化:
- 套餐名称和价格放大,置于卡片顶部。
- CTA 不用滚动卡片就能看到。
- 功能列表放在下方。重点突出套餐之间的差异,而不是在每一列重复相同的功能。
无障碍检查清单
- 每个套餐都是一个独立的
<article>,并带有自己的<h3>。 - “最受欢迎”角标要是可见的文字标签,而不是只靠颜色区分(照顾色盲用户)。
- CTA 按钮使用描述性文案(“开始 Pro 试用”),而不是“点击这里”。
- 计费周期切换要带
aria-pressed,或者使用单选按钮(radio)的语义。 - 如果用 JavaScript 实现切换,价格变化要通过
aria-live="polite"播报。
常见问题
3 个是营销上的默认答案:更容易扫读,也能清楚地把中间那个选项推出来。当你确实有四类客户(个人 / 团队 / 企业 / 大型企业)时,4 个套餐才成立。5 个以上通常只会让访客犯难,这时应该拆成两个表格,或者另外加一张功能对比表。
取决于你的业务。默认年付会突出折扣力度,并把较低的价格锚定在用户心里;默认月付则没那么“进攻性”。如果这直接影响收入,就做 A/B 测试。一个折中做法是:默认年付,但把月付选项放在一次点击就能到达的位置。
repeat(auto-fit, minmax(240px, 1fr)) 这个网格会自动处理。当视口宽度低于约 800px 时,卡片会自动变成单列,完全不需要写媒体查询。
如果按价格从低到高排列,就放在最右侧。它的 CTA 文案应该是“联系销售”而不是一个价格,卡片样式也要和其他套餐保持一致,才不会破坏整张表的扫读体验。也有公司把企业版单独放到表格下方的一个区块里,以免干扰上面几个套餐的价格对比。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
电话号码验证器
根据各国号码规划检查结构,并显示地区、类型以及E.164、国际、国内和RFC 3966格式。
随机颜色生成器
生成 1 到 50 个随机 HEX 颜色,查看色块,复制代码,并用于 CSS、测试或配色探索。
BBCode 转 HTML 转换器
将 BBCode(论坛标记)转换为干净的 HTML。支持格式标签、列表、引用、代码、图片和链接。