rem和em的区别

原文链接:http://caibaojian.com/rem-vs-em.html

rem 单位如何转换为像素值

当使用 rem 单位,他们转化为像素大小取决于页根元素的字体大小,即 html 元素的字体大小。 根元素字体大小乘以你 rem 值。·

例如,根元素的字体大小 16px,10rem 将等同于 160px,即 10 x 16 = 160。


CSS padding设置为 10rem

计算结果为160px·

em 单位如何转换为像素值

当使用em单位时,像素值将是em值乘以使用em单位的元素的字体大小。

例如,如果一个 div 有 18px 字体大小,10em 将等同于 180px,即 10 × 18 = 180。

CSS padding设置为 10em

 

重点理解:

有一个比较普遍的误解,认为 em 单位是相对于父元素的字体大小。 事实上,根据W3标准 ,它们是相对于使用em单位的元素的字体大小。·

父元素的字体大小可以影响 em 值,但这种情况的发生,纯粹是因为继承



 

转载于:https://www.cnblogs.com/LeoXnote/p/10033030.html

<think>好的,用户想了解CSS中remem单位的区别。首先,我需要回顾这两个单位的基本定义用法。rem是相对于根元素(html)的字体大小,而em则是相对于父元素的字体大小。记得用户可能对相对单位不太熟悉,所以需要从基础讲起。 接下来,要对比两者的差异。比如,在嵌套结构中,em会因为父元素的字体大小变化而层层影响,而rem始终保持相对于根元素的基准。这时候可能需要举例说明,比如父元素字体是16px,子元素用1.5em就会是24px,而用1.5rem则是根据根元素的16px来计算,不管父元素如何变化。 然后,要考虑用户的实际应用场景。比如在响应式设计中,使用rem更容易统一调整整个页面的比例,而em适合组件内部的相对调整。同时,用户可能想知道在不同属性中使用em的情况,比如font-sizepadding使用em时,分别相对于什么,这点需要澄清。 另外,需要提到浏览器默认字体大小通常是16px,但用户可能更改,这时候rem的基准也会变化,而em则依赖于最近的父元素。还要注意可能的问题,比如多层嵌套导致em计算复杂,难以维护,而rem更可控。 最后,结合用户的引用资料,引用[3]提到初学者常用px,但其他单位如remem更有用,可以引用相关内容来支持解释。可能还需要提到normalize.cssborder-box的影响,不过用户的问题主要关于单位,这部分可能关联不大,但如果有时间可以简要提及。 现在需要确保回答结构清晰,分点对比,举例子,并引用相关资料。同时按照用户要求,生成相关问题,比如应用场景、如何选择、浏览器支持等。检查是否所有数学表达式用$...$,但这个问题可能不涉及数学公式,所以可能不需要。但如果有代码示例,需要用正确的格式,比如展示设置根字体大小的CSS代码。</think>### CSS中remem单位的区别 #### 1. **定义与基准** - **rem(Root Em)**:基于**根元素(`<html>`)的`font-size`**计算。例如,根元素字体为$16px$,则$1rem = 16px$,$2rem = 32px$。 - **em**:基于**当前元素的父元素`font-size`**计算。例如,父元素字体为$14px$,则$1em = 14px$,$2em = 28px$。 #### 2. **继承特性** - **rem**:始终与根元素绑定,不受嵌套影响。无论元素层级多深,计算值始终一致[^3]。 - **em**:受父元素字体大小影响,嵌套层级越深,计算结果可能逐级叠加。例如: ```css .parent { font-size: 16px; } .child { font-size: 1.2em; } /* 16px × 1.2 = 19.2px */ .grandchild { font-size: 1.2em; } /* 19.2px × 1.2 = 23.04px */ ``` #### 3. **应用场景** - **rem**:适合全局布局控制(如间距、容器尺寸)。通过修改根字体大小,可快速调整整个页面的比例,常用于响应式设计。 - **em**:适合局部组件样式(如按钮内文字与图标的比例)。例如,按钮的`padding`用`em`时,会随按钮字体大小自动缩放。 #### 4. **与其他属性的交互** - 在`font-size`属性中使用时: - `rem`直接依赖根元素。 - `em`依赖父元素的`font-size`。 - 在`width`/`padding`等属性中使用时: - **两者均基于当前元素的`font-size`**。例如: ```css .box { font-size: 10px; padding: 2em; /* 20px */ width: 10rem; /* 160px(假设根字体为16px) */ } ``` #### 5. **兼容性与实践建议** - **兼容性**:两者均被所有现代浏览器支持。 - **推荐用法**: - 使用`rem`定义全局布局,结合媒体查询调整根字体以实现响应式。 - 使用`em`定义组件内部细节(如文本缩进、行高),保持组件内比例稳定。 --- ### 示例代码 ```css /* 设置根字体 */ html { font-size: 16px; } /* 全局布局 */ .container { width: 80rem; } /* 80 × 16px = 1280px */ /* 组件样式 */ .button { font-size: 1em; /* 继承父元素字体 */ padding: 0.5em 1em; /* 根据按钮字体大小自适应 */ } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值