CSS 中的 rem 和 em 的区别(1)

作者: zidea | 来源:发表于2019-02-18 07:51 被阅读11次

css 个人接触一段时间,自认为对一些 confusing 的地方比较清楚,但是上周当有同事问道 rem 和 em 具体的区别,以及他们都适合应用在什么场景下,自己也回答含糊不清,所以搜集一些资料从新回顾一下这部分知识。

首先我们要明确 em 和 rem 概念
他们都是相对单位,说道相对,那么就是需要相对对象。
em 的相对对象是其父级对象的 font-size 值 也就是父级 dom 的 font-size * em的值
rem 这里多一个 r ,其他相同也就是 r + em,这个 r 指明了这里相对对象只能是 root 也就是 html的 font-size,下面通过实例进行讲解

<header>
        <h1>标题</h1>
        <nav></nav>
    </header>
    <div class="wrapper">
        <div class="col-em">
            <h1>Lorem ipsum dolor sit amet.</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate est, ut delectus obcaecati dolores vero necessitatibus suscipit debitis saepe facilis?</p>
        </div>
        <div class="col-rem">
            <h1>Lorem ipsum dolor sit amet.</h1>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate est, ut delectus obcaecati dolores vero necessitatibus suscipit debitis saepe facilis?</p>
        </div>
    </div>

先写一个 html 文件,dom 结构很简单,只是为了说明 em 和 rem 这两个单位。

@import "variables/variable.scss";

.wrapper{
    display: flex;
}

css 为了方便我用了 sass 来写,然后编译成为 css 来使用,没有什么特别的,如果大家不了解 sass 留言我可以分享 sass 的用法,如果您作为一个前端开发人员,还不知道有 sass 那么多少有些落伍了。

.col-em h1 {
  font-size: 2.5em; }

.col-rem h1 {
  font-size: 2.5rem; }

我们分别为 col-em 和 col-rem 指定了 font-size 这里值得说明一下,col-em h1 父级还没有指定 font-size 他会一直向上追溯到 html 节点默认的 font-size 16px。

下面是 sass 代码,结构很清晰吧

.col-em{
    h1{
        font-size: 2.5em;
    }
    p{
        font-size: 1em;
    }
}
001.JPG

运行代码看效果
所以看上去没有什么区别,因为他们都相对目标都是 16px, 都是 2.5 x 2.5em

rem

然后我们修改 col-em > h1 的父级 col-em 的 font-size 的值为 20px 这样由于 em 的相对对象是其父级 font-size

.col-em {
  font-size: 20px; }
  .col-em h1 {
    font-size: 2.5em; }
  .col-em p {
    font-size: 1em; }
002.JPG

所以在 em 这一侧 em 文字大小都增加了。

.wrapper {
  display: flex;
  font-size: 20px; }

.col-em h1 {
  font-size: 2.5em; }

.col-em p {
  font-size: 1em; }

如果我们将 .wrapper 中的 font-size 的值调大,会发现 em 随之改变,而 rem 并没有变化。


002.JPG

相关文章

  • 2020-01-05

    彻底弄懂css中单位px和em,rem的区别 https://www.cnblogs.com/leejersey/...

  • CSS 中的 rem 和 em 的区别(2)

    CSS 中的 rem 和 em 的区别(1)这的注意一下 margin 的大小是根据当前 element 的 fo...

  • rem与em区别

    响应式Web设计—px-em-rem三者区别及rem的使用在css中单位长度用的最多的是px、em、rem,这三个...

  • CSS 中的 rem 和 em 的区别(1)

    css 个人接触一段时间,自认为对一些 confusing 的地方比较清楚,但是上周当有同事问道 rem 和 em...

  • Rem的深入理解

    什么是em? css中有两个常用的相对单位,em和rem,先有的em,css3中又引入rem,两者很容易混淆,所以...

  • CSS使用img做背景并且内容等比缩放

    相关资料:css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况CSS 背景CSS...

  • em和rem

    css中单位长度用的最多的就是px,em,rem。其中,px是固定像素。em和rem是相对长度单位,em相对于父元...

  • 2019-08-29

    px、rem、em的区别 随着css学习的不断深入页面也随之丰富,那么em、rem、px是我们在页面布局中经常会用...

  • px, em, rem 的区别和使用场景

    区别 CSS 中,目前我们常用到的长度单位有 px, em, rem。 绝对长度单位px(pixel 像素): 相...

  • em、rem、px区别

    css中如何区分em、rem、px? 随着css学习的不断深入页面也随之丰富,那么em、rem、px是我们在页面布...

网友评论

    本文标题:CSS 中的 rem 和 em 的区别(1)

    本文链接:https://www.haomeiwen.com/subject/ivhneqtx.html