rem和em的区别,以及他们各自的用法和使用场景
rem 和 em 都是前端开发中用于设置字体大小和元素尺寸的相对单位。它们的主要区别在于它们相对于不同的参考点计算大小。
1. rem(Root Em):
rem当中的r指的就是root也就是元素的根结点rem是相对于根元素(通常是<html>标签)的字体大小来计算的。- 当你设置一个元素的字体大小为
1rem时,它将等于根元素的字体大小。 - 使用
rem单位使得调整整个页面的字体大小变得容易,只需更改根元素的字体大小即可,其他元素会相应地调整。 - 例如,如果根元素也就是
html的字体大小为16px,那么1rem就等于16px。如果你设置某个元素的字体大小为2rem,它将等于32px。
<div class="son" style="font-size: 1rem;">this is son</div>
<div class="son" style="font-size: 2rem;">this is son</div>
2. em:
em是相对于父元素的字体大小来计算的。- 当你设置一个元素的字体大小为
1em时,它将等于其父元素的字体大小。 - 使用
em单位可以创建相对于父元素的可伸缩和可继承的样式。 - 例如,如果某个父元素的字体大小为
16px,而其内部的子元素设置字体大小为2em,那么子元素的字体大小将为32px(2 * 16px)。
<div class="father" style="font-size: 16px;">
this is father
<div class="son" style="font-size: 1em;">this is son</div>
<div class="son" style="font-size: 2em;">this is son</div>
</div>
使用场景和作用:
-
使用
rem通常更适合于整体布局的控制,因为它是相对于根元素的,可以轻松实现全局的字体大小控制。它在响应式设计中很有用,可以在不同屏幕尺寸下保持一致的比例关系。 -
使用
em更适合于局部的样式控制,因为它是相对于父元素的。这对于创建可伸缩的组件非常有用,这些组件的大小应该相对于它们的父元素而言是相对的。
总的来说,选择使用 rem 还是 em 取决于你的具体需求和设计目标。通常,你会在项目中同时使用这两种单位来达到最佳的样式控制效果。