跳到正文

流式尺寸 clamp 计算

Fluid Size Calculator

算出一条 clamp() 表达式,让尺寸在两个视口宽度之间平滑变化。

构建一个在两个视口宽度之间平滑缩放尺寸的 `clamp()`——流式排版表达式,算术已替你做好。两端都用 `rem`,这是决定结果是否无障碍的部分。

🔒 完全在你的浏览器里运行cssclampresponsivetypography

基准点

得到的表达式

斜率

0.833vw

截距

0.833rem

范围

1.000–1.500rem

两个基准点都用 rem,这不是风格偏好。用 px 写的 clamp 会完全无视读者在浏览器里定下的字号。这是一处 WCAG 1.4.4 失败,而把默认字号调到 24px 的人不是写代码的人,所以写的人一辈子也遇不上。 vw 的系数仍然是相对视口的比例,所以在上面改根字号时,只有两端会动,斜率不变。

实际算出来的值

视口尺寸 
320px16px
375px16.46px
480px17.33px
640px18.67px
768px19.73px
1024px21.87px
1280px24px
1440px24px(已钉住)
1920px24px(已钉住)

值得知道的

  • · 过了上面那个基准点,尺寸就被钉住了,再把窗口拉宽也不会变。两个基准点都是 rem,所以它仍然跟着读者自己的字号走——同样的式子写成 px 就不会。

要成套地做这些值的话, 字号阶梯生成会给出 clamp 两端要用的每一级尺寸。

怎么用

  1. 设定四个锚点

    最小视口下的尺寸、最大视口下的尺寸,以及这两个尺寸各自适用的视口宽度。其他一切都由此推出。

  2. 检查解析表

    它显示这个表达式在一系列真实视口宽度下求值的结果,并标出是钳位而不是斜率在起作用的那些。

  3. 复制声明

    一条 `font-size: clamp(...)`。斜率和截距也会显示,供你想理解它而不只是粘贴它的时候用。

常见问题

为什么单位是 `rem` 而不是 `px`?

因为 `px` 的 clamp 完全无视读者的浏览器字号。一个因为需要而把默认字号设成 24px 的人,照样得到你的 16px——那是一次 WCAG 1.4.4 失败,而且是作者永远体验不到的失败。

视口的两端应该是我的断点吗?

不一定。clamp 处理两端之间的一切,所以有用的两端是你支持的最窄的手机,以及你不想让文字继续变大的那个宽度——通常在 1200–1400px 附近,而不是你最大的断点。

缩放还管用吗?

页面缩放管用——它改变视口宽度,clamp 会跟随。纯文字缩放是 `rem` 锚点保护的对象:`vw` 部分不响应它,所以没有 `rem` 分量的话文字就会被冻住。这就是表达式把两者混合的原因。

也能用于内边距和间距吗?

能——表达式是单位算术,不在乎落在哪个属性上。输出写着 `font-size` 只是因为那是常见情况;换掉属性,保留值。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。