🚀 px、em、rem有什么不同

📅 发布于 2026年1月 | 👤 作者:博主 | 🏷️ 标签:"px","em","rem","CSS单位", Web开发, 前端, 面试

欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。

总结

px是绝对单位,em相对于当前元素字体大小,rem相对于根元素字体大小。理解它们的区别对于响应式设计和可维护的CSS至关重要。

三种单位详细对比

单位 定义 特点 适用场景
px(像素) 绝对单位,1px表示屏幕上的一个CSS像素点 固定大小,不随字体、父元素变化 边框、阴影、精确控制的小尺寸
em 相对单位,1em = 当前元素的font-size值 可继承、可级联,容易产生"em倍增效应" 组件内部间距、需要跟随字体缩放的场景
rem 相对单位,1rem = 根元素<html>的font-size值 不继承、不级联,全局可控,避免嵌套问题 页面布局、全局间距、响应式设计

代码示例

基本用法示例:

html {
  font-size: 16px; /* 默认根字号 */
}

p {
  font-size: 1.5rem; /* 总是 24px (16px × 1.5) */
}

div {
  padding: 2rem; /* 总是 32px (16px × 2) */
  border: 1px solid #ccc; /* 固定1像素边框 */
}
🌟 常用技巧:

📝 方便计算的根字号设置:
为方便计算,很多项目会重置根字号
html {
  font-size: 62.5%; /* 16px × 62.5% = 10px → 1rem = 10px */
}

body {
  font-size: 1.6rem; /* = 16px,恢复正常字体大小 */
}

.container {
  padding: 2rem; /* = 20px,计算更直观 */
  margin: 1.5rem; /* = 15px */
}
💡 优势:
1rem = 10px,计算更加直观,设计稿转换更容易

em的倍增效应示例

.parent {
  font-size: 1.2em; /* 相对于父元素 */
}

.child {
  font-size: 1.2em; /* 1.2 × 1.2 = 1.44倍 */
}

.grandchild {
  font-size: 1.2em; /* 1.44 × 1.2 = 1.728倍 */
}

/* 使用rem避免倍增效应 */
.parent-rem {
  font-size: 1.2rem; /* 始终相对于根元素 */
}

.child-rem {
  font-size: 1.2rem; /* 仍然是1.2倍,不会累积 */
}
← 返回首页