T-01
流体排版
Fluid Type
字号随容器宽度连续变化,不会在断点上突然跳一档。
- 又叫:
- 流式字号
- 自适应字号
- 弹性排版
- fluid typography
- fluid type scale
- responsive font-size
- 展厅
- 排版与文字
- 形态
- 固定舞台
- 播放
- 常驻循环
- 关键词
- 纯 CSS / 新 CSS 特性 / 会引发重排 / 先查兼容
T-01形态 固定舞台播放 常驻循环Fluid Type
参数工作台
复制给 AI
随参数实时更新做一个流体排版(fluid type)的标题,font-size 写成 clamp(16px, calc(16px + 3cqw), 44px),随容器宽度连续变化,不要用媒体查询断点。父容器加 container-type: inline-size,让 cqw 跟卡片宽度而不是视口走。行高用无单位倍数,保证字放大后不挤。
fluid type scale, font-size: clamp(16px, calc(16px + 3cqw), 44px), container-type: inline-size, cqw container query units, no media query breakpoints, unitless line-height, responsive typography
https://publieople.github.io/design-museum/entry/fluid-type/?stage=light
链接带着你调好的参数
什么时候用
- 大标题在小屏和大屏之间跨度很大,用媒体查询会看到字号一级一级地跳
- 想让标题、间距、圆角共用一个比例,跟着屏幕一起放大缩小
- 需要给字号设上下限,避免手机上一行放不下、超宽屏上又大得荒唐
适用场景:文字 / 页面 / 卡片
推荐取值
- 字号公式
- clamp(1rem, 0.75rem + 1.2vw, 2.5rem)
- 正文字号下限
- 16px(不要低于 14px)
- 字号标度比
- 1.125–1.333
- 行高
- 标题 1.1–1.2,正文 1.5–1.6(无单位)
别搞混
和「媒体查询断点」的区别
断点是「到某个宽度就换一套值」,两个断点之间字号是平的,跨过临界点会突然跳一下;流体排版把中间值写成带 vw 或 cqw 的 calc(),宽度一变字号就跟着连续变。
和「rem 固定字号」的区别
rem 只跟根元素字号走,和屏幕宽度无关;rem 仍然要用,但想让文字跟着屏幕流起来,必须把 rem 和 vw 或 cqw 混进同一个 clamp() 里。
容易踩的坑
- 纯 vw 字号不跟浏览器的默认字号设置走:用户在浏览器里调大文字,vw 那一段不会跟着变大,而无障碍要求文字能放大到 200%。中间值要掺 rem,写成 clamp(1rem, 1rem + 2vw, 2.5rem)。
- vw 是视口宽度,不是父容器宽度。把流体标题放进窄卡片时会算出偏大的字号,这种场景要改用容器查询单位 cqw,并给父级加 container-type: inline-size。
- min 写成比 max 还大时 clamp() 不会报错,会直接取 min,页面上看起来完全没变化。
- 只流 font-size 不管 line-height,大标题会挤在一起或者行与行散开;行高要用无单位倍数,或者跟着一起 clamp。
无障碍降级
流体排版是静态排版,和 prefers-reduced-motion 无关。如果有人把它做成随滚动缩放字号,用户开启减少动态效果时应停在基准字号。
关键词
- clamp()
- vw
- cqw
- calc()
- fluid typography
- responsive font-size
- container query units