用 font-size 控制文字大小最直接,css 的 font-size 属性是实际生效的核心,支持 px、em、rem 和 clamp() 等写法,其中 clamp(min, preferred, max) 是响应式流体字号首选方案。

用 font-size 控制文字大小最直接
html 本身不提供调整文字大小的语义化标签(比如旧版的 已被废弃),实际起效的是 CSS 的 font-size 属性。所有现代浏览器都支持,且优先级高于任何 HTML 标签自带的“默认尺寸”。
常见写法包括:
-
font-size: 16px—— 绝对像素值,精确但不利于缩放 -
font-size: 1.2em—— 相对于父元素字体大小,适合嵌套布局 -
font-size: 1.2rem—— 相对于根元素()字体大小,响应式首选 -
font-size: clamp(1rem, 2.5vw, 1.5rem)—— html5 + CSS 新特性,实现流体字号(下文细说)
clamp() 是 HTML5 时代调文字大小的核心新能力
注意:clamp() 是 CSS 函数,不是 HTML5 新标签,但它在 HTML5 文档中被广泛采用,是目前解决“小屏太小、大屏太大”问题最简洁的方案。
它的语法是 clamp(min, preferred, max),浏览器会根据视口动态插值:
立即学习“前端免费学习笔记(深入)”;
h1 { font-size: clamp(1.2rem, 4vw, 2.5rem); }
上面这行的意思是:字号最小不小于 1.2rem,最大不超过 2.5rem,在中间区间按 4vw 线性缩放。实际效果比媒体查询更平滑,代码量更少。
容易踩的坑:
-
clamp()在 IE 中完全不支持,safari 13.1+ 才开始稳定支持 - 三个参数单位最好统一(如都用
rem或都用vw),混用可能导致意外计算 - 不要在
font-size里嵌套另一个clamp(),CSS 不支持递归
别再用 、 标签调大小
这两个标签在 HTML5 中虽未被移除,但语义已明确为“旁白式强调”而非“视觉尺寸控制”。 表示边注、版权、免责声明等次要内容,浏览器默认样式可能只是变小,但可被 CSS 覆盖——它不是为“我要把这段字调成 12px”设计的。
如果你只是想快速改大小,硬写标签不如直接加内联样式:
这段字略小
但更推荐的做法是定义 class:
.text-sm { font-size: 0.875rem; } .text-lg { font-size: 1.125rem; }
移动端适配时,viewport 设置会影响 font-size 表现
即使写了 font-size: 16px,如果页面没设 ,ios Safari 会强制缩放整个页面,导致文字看起来忽大忽小,甚至触发“双击放大”逻辑。
关键点:
- 没有 viewport 声明时,
1rem在某些安卓浏览器里可能不是 16px - 用
rem单位前,建议先重置根字体大小:html { font-size: 100%; }(避免用户系统设置干扰) - 用
vw单位时,要注意横屏/竖屏切换时视口宽度突变,clamp()能缓解但不能消除抖动
真正难的不是怎么调大调小,而是让不同设备、不同系统字体设置、不同缩放偏好下的用户,看到一致又可读的字号。这需要测试真机,而不是只看 chrome DevTools 模拟器。