正在加载...

CSS 单位

你已经会写像 color: teal 这样的声明。尺寸相关属性还需要第二个概念:有多大。单独的 font-size: 16 对大多数长度属性无效——浏览器需要一个单位,才能知道「16」表示什么。

什么是 CSS 单位?

CSS 单位是附在长度值上的度量后缀——例如 px、rem、%、vw 和 vh。绝对单位不论父元素如何都保持同样大小。相对单位随其他事物缩放:元素字体、根字体、父元素尺寸或视口(viewport)。

绝对与相对一览

把这张表当作地图。第一天不需要掌握每个单位——先认识类别,再练习日常单位。

📊 常用 CSS 长度单位

单位 类别 典型用途
px 绝对(屏幕像素) 边框、图标微调、1px 细线
rem 相对根字体大小 页面正文与一致间距
em 相对元素自身字体大小 随本地文字增长的内边距
% 相对父元素尺寸 容器内的流式宽度
vw 相对视口宽度 通栏区块(谨慎使用)
vh 相对视口高度 主视觉高度、全屏面板

像素(px)

px 是屏幕上的绝对单位。对细边框和小的固定细节很可预期。若在响应式站点里把所有排版都只用 px,就不太理想,因为它不会像 rem 那样随用户的根字体偏好自动缩放。

卡片边框的像素尺寸

css
CSS Code
.card {
border: 1px solid #cbd5e1;
border-radius: 8px;
width: 320px;
}

何时 px 仍然出色

需要固定视觉边缘时,优先用 px 做发丝边框、阴影偏移和细小 UI。当设计需要随字号或容器宽度呼吸时,优先用相对单位。

rem 与 em

rem 相对于根元素的字号(通常是 <html>)。em 相对于当前元素的字号(或按属性相对父元素)。对初学者来说,rem 是 font-size 和许多间距更稳妥的默认选择,因为在嵌套元素中保持一致。

用 rem 做相对根的排版

css
CSS Code
html {
font-size: 100%; /* often 16px in browsers */
}

.lead {
font-size: 1.25rem; /* ~20px if root is 16px */
margin-bottom: 0.75rem;
}

一句话理解 em

当你希望数值随本地字体缩放时用 em——例如组件文字变大时一起变大的内边距。若嵌套的 em 不断相乘、尺寸「失控」,就把那些尺寸改成 rem。

百分比(%)

百分比相对于父元素的某一尺寸。width: 50% 时,元素目标约为父宽度的一半(当父元素有明确宽度时)。百分比是容器内流式布局的经典工具。

用百分比做流式宽度

css
CSS Code
.sidebar {
width: 30%;
}

.main {
width: 70%;
}

视口单位(vw 与 vh)

1vw 是视口宽度的 1%;1vh 是视口高度的 1%。对全屏主视觉很强,但也容易滥用——仅用 vw 设定的文字在极宽或极窄屏幕上可能难以阅读。

主视觉的视口高度

css
CSS Code
.hero {
min-height: 80vh;
padding: 2rem;
}

实用的默认习惯

起步习惯:字号与多数垂直间距用 rem,宽度用 % 或灵活布局工具(稍后:Flexbox/Grid),边框与细小固定细节用 px。做通栏区块时再回头用视口单位——不要每个外边距都用。

自己动手试

  1. 创建 .card 规则:width: 80%、max-width: 24rem、border: 1px solid #94a3b8。
  2. 设置 .card h2 { font-size: 1.5rem; },短段落用 1rem。
  3. 在卡片上方加 .banner { min-height: 40vh; }。
  4. 调整浏览器窗口并改根元素 html { font-size: … },感受 %、vh 与 rem 的不同反应。
  5. 可选:在 .card 内把标题改成 1.5em,看看嵌套尺寸是否出乎意料。

常见错误

  • 写不带单位的 font-size: 16——在标准 CSS 中对长度无效
  • 在应尊重缩放/用户偏好的站点上所有字体都只用 px
  • 嵌套过多 em,直到文字过大或过小
  • 正文只用 vw,导致大显示器上行距「爆炸」
  • 假定父元素没有明确高度时 % 高度仍有效

小结

  • 长度值通常需要单位(px、rem、%、vw …)
  • 绝对单位固定;相对单位随字体、父元素或视口缩放
  • 排版优先 rem,宽度优先 %/布局系统,细边框优先 px
  • em 随本地字体;vw/vh 随视口
  • 按任务选单位——不要处处强推同一单位

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
7
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部