什么是流式排版
传统的响应式字体会挑选几个固定字号,再用媒体查询切换:手机 16px、平板 18px、桌面 20px。流式排版则把这些台阶换成随视口宽度连续变化的函数。借助 CSS clamp(),整条规则只需一行,浏览器会为两个端点之间的每一个宽度算出合适的字号。
clamp() 背后的公式
流式尺寸是一条穿过两点的直线:(最小视口,最小尺寸)和(最大视口,最大尺寸)。斜率 =(最大尺寸 − 最小尺寸)÷(最大视口 − 最小视口),乘以 100 就是 vw 系数。截距 = 最小尺寸 − 斜率 × 最小视口。最终结果为 clamp(最小尺寸, 截距 + 斜率·100vw, 最大尺寸)。上方的生成器正是这样计算的,并按你选择的小数位数取整。
如何选择合适的字号
正文字号通常不需要大幅变化:16 到 18 或 16 到 20 像素已能满足大多数阅读场景。标题更能从流式字号中受益,因为在笔记本上好看的 48px 标题,放到手机上会占据半个屏幕。建议从最大的标题开始逐级向下设计,字号越小,最小值与最大值之间的比例也应越小。
视口范围应根据你的布局而不是设备清单来确定。最小值通常是 320 或 360 像素;最大值是内容容器达到 max-width 的宽度。超过这个宽度后行长不再增加,字号也不应该继续增大。
无障碍检查清单
最小值、最大值和截距都使用 rem,确保用户的字号偏好依然生效。将页面放大到 200% 检查 WCAG 1.4.4:当最大值超过最小值约 2.5 倍时,缩放可能无法让文字足够变大,工具会给出提示。行高使用相对值(例如 1.5),让它随字号一起缩放;并在最窄的屏幕上检查最长的单词。