CSS中px,em,rem的区别

在CSS中,px,em,rem都是单位,用于表示长度(如宽度、高度、字体大小等)。它们之间的区别主要在于相对性和使用场景。

px(像素):

绝对单位,但相对于显示设备而言。在屏幕上,一个像素通常对应屏幕上的一个点。

不同设备像素密度不同,因此同样px大小的元素在不同设备上看起来可能大小不同(例如在高DPI设备上,一个CSS像素可能对应多个物理像素)。

固定单位,不会因为其他元素的变化而变化。

css 复制代码
.container {
  font-size: 16px;  /* 始终是16像素 */
  padding: 10px;     /* 始终是10像素 */
}

em:

相对单位,相对于当前元素的字体大小(font-size)。如果没有设置,则继承父元素的字体大小,直至根元素。

常用于实现相对于当前字体大小的缩放。例如,设置margin或padding为2em,表示两倍于当前字体大小。

当嵌套多个元素时,如果每个元素都使用em单位,并且设置了不同的字体大小,那么它们之间的相对计算会逐层复合,可能导致意想不到的效果。

css 复制代码
.parent {
  font-size: 16px;
}

.child {
  font-size: 2em;    /* 32px (16 × 2) */
  margin: 1.5em;     /* 48px (32 × 1.5) */
}

rem:

相对单位,相对于根元素(html)的字体大小。如果没有设置,浏览器默认的根元素字体大小通常是16px。

由于是相对于根元素,所以不会受到父元素字体大小的影响,避免了em单位嵌套带来的问题。

在响应式设计中,通过改变根元素的字体大小,可以轻松调整整个页面的缩放比例。

css 复制代码
html {
  font-size: 16px;   /* 默认通常是16px */
}

.element {
  font-size: 2rem;   /* 32px (16 × 2) */
  padding: 1.5rem;   /* 24px (16 × 1.5) */
}

总结

使用px时,大小固定,适合需要精确控制的情况,但不利于响应式设计。

使用em时,相对于当前元素字体大小,适合组件内部的相对缩放,但需注意嵌套问题。

使用rem时,相对于根元素字体大小,适合全局的响应式缩放,易于维护。

特性 px em rem
参照基准 设备像素 父元素字体大小 根元素(html)字体大小
继承性
响应式
计算方式 固定值 相对父元素计算 相对根元素计算
相关推荐
天下代码客5 小时前
使用electronc框架调用dll动态链接库流程和避坑
前端·javascript·vue.js·electron·node.js
冰暮流星6 小时前
javascript之数组
java·前端·javascript
xkxnq6 小时前
第五阶段:Vue3核心深度深挖(第74天)(Vue3计算属性进阶)
前端·javascript·vue.js
三小河6 小时前
Agent Skill与Rules的区别——以Cursor为例
前端·javascript·后端
Hilaku6 小时前
不要在简历上写精通 Vue3?来自面试官的真实劝退
前端·javascript·vue.js
三小河7 小时前
前端视角详解 Agent Skill
前端·javascript·后端
颜酱7 小时前
二叉树遍历思维实战
javascript·后端·算法
鹏多多7 小时前
移动端H5项目,还需要react-fastclick解决300ms点击延迟吗?
前端·javascript·react.js
不想秃头的程序员7 小时前
Vue3 封装 Axios 实战:从基础到生产级,新手也能秒上手
前端·javascript·面试
奔跑的web.7 小时前
UniApp 路由导航守
前端·javascript·uni-app