什么是em
单位?
em
是CSS中的一种相对长度单位,表示当前元素字体大小的倍数。font-size: 2em;
表示当前元素字体大小为其父元素字体大小的2倍。
em
px
em
的计算规则
- 默认基准:浏览器默认字体大小为
16px
(可通过html { font-size: 16px; }
修改)。 - 逐层继承:
- 如果父元素
font-size: 16px
,则1em = 16px
。 - 如果子元素
font-size: 1.5em
,则实际大小为16px 1.5 = 24px
。
- 如果父元素
- 嵌套计算:
<div style="font-size: 16px"> <!-1em = 16px --> <p style="font-size: 2em"> <!-2em = 32px --> <span style="font-size: 0.5em"> <!-0.5em = 16px (继承自段落) --> 文本 </span> </p> </div>
em
的常见用途
-
响应式设计:
通过em
实现元素尺寸与字体比例的动态关联,.button { font-size: 1em; / 随父元素变化 / padding: 0.8em 1.2em; / 高度和宽度随字体缩放 / }
-
组件化开发:
在弹窗、导航栏等组件中,用em
保证内部元素与根元素的比例一致。 -
无障碍设计:
用户调整浏览器字体大小时,em
单位的元素会同步缩放,提升可读性。em
是相对于父元素的字体大小,而rem
是相对于根元素(html
)的字体大小。- 若
html { font-size: 16px; }
,则1rem = 16px
,且所有rem
单位均基于此值,不受父元素影响。
问题2:为什么有时用
em
会导致布局错乱?解答:
- 当元素嵌套过深或多次使用
em
时,字体大小可能因链式计算产生非预期值(如8em 0.9em = 0.72em
)。 - 建议在复杂布局中优先使用
rem
或固定px
值,仅在需要响应式比例