FORMA

字体单位

CSS 长度单位分为绝对相对两类。排版与布局中,字号与间距优先使用相对单位(remem%),更利于响应式与用户放大字号;边框、细线等可用 px。与排版属性的配合见 排版与文本

绝对长度单位

主要用于印刷(@media print)或需要固定物理尺寸的场景。

单位说明
pxCSS 像素,映射到设备像素的比例因 DPR 而异;不随父元素字号变化
pt1pt = 1/72 英寸,印刷常用
pc1pc = 12pt,少见

关于 px 与无障碍

MDN 建议:避免仅用 px 定义字号,因为部分用户依赖浏览器「最小字号」或默认字号放大;rem / % 相对根字号更易配合无障碍设置。页面整体缩放仍会放大 px 布局,但字号策略上更推荐 rem

相对长度单位

相对于字体:em / rem / ch / lh

单位参照特点
em当前元素 font-size(或父级,视属性而定)font-size 上会复合嵌套;适合组件内 padding: 0.5em 1em 随字号伸缩
rem根元素 <html>font-size不随嵌套累积;适合全局字号、间距
ch数字 0 的字形宽度常用于 max-width: 60ch 限制行长
lh / rlh元素 / 根 的 line-height与行高对齐的间距(较新)

em 复合示例:父 font-size: 1.2em,子再 1.2em → 相对祖父约为 1.44em

rem 示例html { font-size: 100%; }(通常 16px)时,1.25rem ≈ 20px。

font-size: 62.5% 技巧:使 1rem ≈ 10px(在默认 16px 下)。现较少推荐:改变根字号比例可能影响用户默认字号预期;更常见是保持 100% 并用 1.125rem 等小数字。

相对于视口:vw / vh / vmin / vmax / vi / vb

单位说明
vw / vh视口宽/高的 1%
vmin / vmaxvw 与 vh 中较小/较大者
vi / vb行内/块向视口尺寸(书写模式相关)

动态视口单位(移动端全屏)

单位含义(规范定义)
dvh动态视口高度 1%;随浏览器 UI(地址栏等)显隐变化
svh小视口高度 1%(UI 最大占用时)
lvh大视口高度 1%(UI 最小占用时)

全屏区块常用 min-height: 100dvh 替代 100vh,减少地址栏收起前后高度跳动;支持度见 MDN length · 视口百分比

百分比 %

用于 font-size 时,相对于父元素font-size(行为类似 em)。

对比:px vs em vs rem

特性pxemrem
参照固定 CSS 像素当前/父级字号根字号
嵌套不累积font-size 易累积不累积
适用边框、阴影、1px 线组件内随字号伸缩的 padding全局字号、页面间距
无障碍字号场景慎用较好推荐

流式字号:clamp()

结合 remvw 限制最小/最大字号:

css
h1 {
    font-size: clamp(1.25rem, 2.5vw + 1rem, 2rem);
}

代码示例

css
html {
    font-size: 100%; /* 尊重用户默认,通常 16px */
}

body {
    font-size: 1rem;
    line-height: 1.5; /* 无单位:1.5 × 自身 font-size */
}

.card {
    border: 1px solid #ccc; /* 细线用 px */
    padding: 1.5rem;
}

.btn {
    font-size: 1rem;
    padding: 0.5em 1em; /* em 相对 .btn 的 font-size */
}

.title {
    font-size: 1.5rem;
    max-width: 40ch; /* 约 40 个字符宽 */
}

总结

  • 全局字号与间距:优先 rem;组件内部随字号缩放:em
  • 边框、1px 分隔线:px
  • 标题响应式:clamp() + rem/vw
  • 避免为正文单独写死 px 字号;根元素宜用 % 而非随意改小 62.5%

参考文献

以下链接在编写时均可正常访问:

资料说明
MDN:font-sizepx、em、rem 与无障碍说明
MDN:length长度单位总览
MDN:clamp()流式字号
MDN:line-heightlh 单位
W3C:CSS Values and Units Module Level 4单位规范(英文)
MDN:length · 视口dvh、svh、lvh

Series

css

7 / 20