rem和em的区别

434 阅读3分钟

rem和em的区别

remem 都是 CSS 中的相对单位,但它们的作用机制和用途有所不同。以下是它们的详细区别:

  1. em 单位
  • 定义em 是相对于当前元素的字体大小(font-size)的单位。
  • 特点
    • 如果当前元素没有设置字体大小,则会继承父元素的字体大小。
    • 具有继承性,可能会导致嵌套元素的尺寸逐级放大或缩小。
  • 用途:适合用于需要相对于当前字体大小调整的场景,如内边距、外边距、宽度、高度等。
  • 示例
    .parent {
        font-size: 16px;
    }
    .child {
        font-size: 1.5em; /* 16px * 1.5 = 24px */
        padding: 2em; /* 24px * 2 = 48px */
    }
    
  1. rem 单位
  • 定义rem 是相对于**根元素(<html>)**的字体大小(font-size)的单位。
  • 特点
    • 不受嵌套元素的影响,始终基于根元素的字体大小。
    • 更适合全局统一的尺寸控制。
  • 用途:适合用于需要全局一致性的场景,如布局、字体大小、间距等。
  • 示例
    html {
        font-size: 16px;
    }
    .box {
        font-size: 1.5rem; /* 16px * 1.5 = 24px */
        padding: 2rem; /* 16px * 2 = 32px */
    }
    
  1. 主要区别
特性emrem
参照对象当前元素的字体大小根元素(<html>)的字体大小
继承性受父元素字体大小影响不受嵌套元素影响
适用场景局部调整(如按钮、图标等)全局调整(如布局、字体大小等)
计算方式逐级继承,可能导致尺寸逐级放大或缩小始终基于根元素,计算简单且一致
示例padding: 2em;(基于当前字体大小)padding: 2rem;(基于根元素字体大小)
  1. 使用场景对比

em 的使用场景

  • 需要相对于当前元素字体大小调整的样式。
  • 嵌套元素的尺寸需要逐级变化的情况。
  • 按钮、图标等局部组件的样式。

示例

.button {
    font-size: 1.2em; /* 相对于父元素字体大小 */
    padding: 0.5em 1em; /* 相对于当前字体大小 */
}

rem 的使用场景

  • 需要全局统一的尺寸控制。
  • 布局、间距、字体大小等需要一致性的场景。
  • 避免嵌套元素尺寸逐级变化的情况。

示例

html {
    font-size: 16px;
}
.container {
    font-size: 1.5rem; /* 24px */
    margin: 2rem; /* 32px */
}
  1. 注意事项
  • em 的继承性:嵌套使用 em 时,可能会导致尺寸逐级放大或缩小,需谨慎使用。
  • rem 的兼容性rem 在现代浏览器中支持良好,但在某些旧版本浏览器(如 IE8 及以下)中不支持。
  • 结合使用:在实际开发中,可以结合使用 emrem,利用 em 的局部灵活性和 rem 的全局一致性。

总结

  • em:基于当前元素的字体大小,适合局部调整。
  • rem:基于根元素的字体大小,适合全局调整。

根据具体需求选择合适的单位,可以更高效地实现响应式布局和样式控制。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github