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 小时前
Vue项目解决跨域
前端·javascript·vue.js
指尖时光.5 小时前
Three.js 超全入门综合案例
开发语言·javascript·ecmascript
唐青枫6 小时前
http-server:别再双击 index.html,一条命令把目录变成网站
前端·javascript
学习星球8 小时前
Solid.js 实战:拆解官方 RealWorld 项目
开发语言·javascript·vue.js
YuJie10 小时前
JSBridge 基础知识
前端·javascript
默_笙10 小时前
🍕 后端接口还没写好,前端已经跑起来了?Mock 数据 + axios 接口层,前后端再也不互相"等"
前端·javascript
爱勇宝10 小时前
客户只想看个页面,我却做了一个静态演示发布系统
前端·javascript·后端
界面开发小八哥14 小时前
界面控件DevExpress Blazor v26.1新版亮点 - Navigation(导航)
javascript·.net·界面控件·blazor·devexpress·ui开发
SendTomo15 小时前
send.wang(私传网)基于网页P2P直连传输大文件的优势
javascript·网络·webrtc·html5·p2p
学习星球15 小时前
Astro 全栈实战:拆解 RealWorld 项目
前端·javascript·架构·系统架构·前端框架·c5全栈