📚前端面试题速记
Q3

rem、em、px 的区别?

速记答案(30 秒)

px 是绝对像素,简单直观但不随根字号变化。em 相对当前/父元素字体大小,会级联放大。rem 相对 html 根元素字体大小,全局统一、方便做响应式。常见套路:html { font-size: 62.5%; } → 1rem = 10px。

📖 详细讲解

标准面试回答(推荐记住)

px 是绝对单位,1px 就是 1 个像素点,简单直观但不能自适应。em 是相对单位,相对于当前元素或父元素的字体大小,缺点是会级联放大,嵌套多层后计算麻烦。rem 是相对于根元素 html 的字体大小,全局统一不会级联,非常适合做响应式布局。常见技巧是设置 html { font-size: 62.5%; },这样 1rem 就等于 10px,方便计算。

单位对比

单位 基准 级联 适用场景
px 像素 固定尺寸、边框
em 父/当前元素字号 组件内相对尺寸
rem html 根元素字号 不会 全局响应式布局

级联问题演示

/* em 的级联问题 */
.parent { font-size: 1.2em; }  /* 假设基准 16px → 19.2px */
.child { font-size: 1.2em; }   /* 19.2 × 1.2 = 23.04px */
.grandchild { font-size: 1.2em; } /* 23.04 × 1.2 = 27.65px */

/* rem 不会级联 */
.parent { font-size: 1.2rem; }    /* 16 × 1.2 = 19.2px */
.child { font-size: 1.2rem; }     /* 16 × 1.2 = 19.2px */

面试要点

  • px 固定、em 级联、rem 全局统一
  • rem 适合响应式布局
  • 62.5% 技巧让 1rem = 10px

💻 代码示例

rem 响应式布局
/* 基准设置 */
html {
  font-size: 62.5%; /* 16px × 62.5% = 10px */
}

/* 使用 rem */
.container {
  width: 32rem;     /* 320px */
  padding: 1.6rem;  /* 16px */
  font-size: 1.4rem; /* 14px */
}

/* 响应式调整 */
@media (max-width: 768px) {
  html { font-size: 56.25%; } /* 9px 基准 */
}