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)字体大小
继承性 无 有 无
响应式 弱 强 强
计算方式 固定值 相对父元素计算 相对根元素计算
相关推荐
FungLeo10 小时前
成为全栈·Vue管理后台篇·仪表盘不是几张卡片:组合统计接口与角色视图
前端·javascript·vue.js·rbac·仪表盘·管理后台·tanstack query
程序员大阳10 小时前
HTML+CSS+JS对话式实战(7)-学生端活动报名功能开发
javascript·css·html·活动报名
西安小哥11 小时前
做 Agent 写到第三个小时,我开始给它算账
javascript
西安小哥11 小时前
让大模型操作浏览器跑了两周,我发现瓶颈根本不在模型
javascript
用户2986985301412 小时前
用 Python 自动化把 JavaScript 代码转换为 Word 文档
javascript·python·api
学以智用12 小时前
正则表达式完整参考手册(JavaScript 版,兼容绝大多数语言)
javascript
北城笑笑12 小时前
Vue 109 ,从零搭建 Vue3 + Electron 工程:生态、安全桥接与打包选型( Vue + Electron )
前端·javascript·vue.js·安全·electron·vue
Highcharts.js12 小时前
Highcharts智能数据分析平台Orbit 多语言配置技术文档
java·前端·javascript·highcharts·orbit·智能数据分析·设置文档
非优秀程序员1 天前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
程序员大阳1 天前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单