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)字体大小
继承性
响应式
计算方式 固定值 相对父元素计算 相对根元素计算
相关推荐
慕斯fuafua2 小时前
CSS——盒模型
前端·css
嗜好ya2 小时前
解决 Vite 项目中 import.meta.env 变量为 undefined 的问题
前端·javascript·vue.js
心连欣2 小时前
JS算法入门:图解“冒泡排序”,彻底搞懂双重循环的奥义
前端·javascript
浩星3 小时前
「Vue3 + Cesium 最佳实践」完整工程化方案
前端·javascript·vue.js
小李子呢02113 小时前
前端八股Vue(5)---v-if和v-show
前端·javascript·vue.js
YiuChauvin4 小时前
vue2中使用 AntV G6
javascript·vue.js
尽欢i4 小时前
前端响应式布局新宠:vw 和 clamp (),你了解吗?
前端·css
peak_chan5 小时前
通过vue-virtual-scroller封装虚拟滚动el-select
前端·javascript·vue.js
小李子呢02115 小时前
前端八股Vue(7)---computed计算属性和watch侦听器
前端·javascript·vue.js
吴声子夜歌5 小时前
ES6——对象的扩展详解
开发语言·javascript·es6