在 CSS 中,px 和 em 是两种常用的尺寸单位,它们的核心区别在于 计算方式 和 应用场景。
定义:绝对单位,表示屏幕上的物理像素点(如 16px)。
特点:
固定尺寸:1px 等于屏幕的一个物理像素点(在高分辨率屏幕下,浏览器可能自动缩放,但逻辑上仍是绝对单位)。
不继承:不受父元素字体大小影响,直接按设定值显示。
适用场景:
需要精确控制尺寸的元素(如边框、图标)。
对响应式布局要求不高的固定尺寸设计。
定义:相对单位,基于 当前元素或父元素的字体大小 计算(如 1em = 当前元素 font-size 的值)。
特点:
相对继承:若当前元素未设置 font-size,则继承父元素的 font-size。
层级叠加:嵌套使用 em 时,尺寸会逐层按比例放大或缩小。
示例:
css复制body { font-size: 16px; } .child { font-size: 1.2em; /* 16px * 1.2 = 19.2px */ padding: 2em; /* 19.2px * 2 = 38.4px */ }适用场景:
需要根据上下文动态调整的尺寸(如段落间距、按钮内边距)。
响应式布局中适配不同屏幕尺寸(通过修改根字体大小,整体缩放元素)。
| 特性 | px | em |
|---|---|---|
| 单位类型 | 绝对单位 | 相对单位 |
| 计算依据 | 屏幕物理像素 | 当前元素的 font-size |
| 继承性 | 无 | 继承父元素 font-size |
| 响应式适配 | 需手动调整 | 自动按比例缩放 |
| 适用场景 | 固定尺寸元素 | 动态适配布局 |
用 px:
需要严格固定尺寸时(如边框 border: 1px)。
不希望尺寸受父元素影响时(如图标大小)。
用 em:
希望尺寸随字体大小动态调整时(如行高 line-height: 1.5em)。
实现响应式布局(结合媒体查询调整根字体大小)。
定义:基于 根元素(<html>)的 font-size 计算(如 1rem = 16px,默认根字体为 16px)。
优势:避免 em 的层级嵌套问题,更适合全局响应式布局。
css复制html { font-size: 16px; } .box { width: 10rem; /* 16px * 10 = 160px */ }px 是“刚性”单位,适合固定尺寸;
em 是“弹性”单位,适合动态适配;
根据场景选择单位,结合 rem 能更高效地实现响应式设计。