美文网首页Web前端之路让前端飞程序员
理解web开发中的em单位和rem单位

理解web开发中的em单位和rem单位

作者: 留七七 | 来源:发表于2017-04-04 15:13 被阅读496次

** em ** 是CSS2引入的相对单位,作为字体大小使用时和百分比单位类似,都是相对于最近的父元素设置字体大小,为标签元素设置字体大小为100%和设置字体大小为1em是一样的效果,默认情况下浏览器的字体大小为16px,这样只要浏览器默认的字体大小不变,1em = 16px。

看下面的两个例子:

使用%单位表示字体大小

<body style="font-size:100%">
    <div style="font-size:80%" class="first">
        <p class="first"></p>
        <div class="second">
            <p class="second"></p>
        </div>
        <div style="font-size:200%" class="third">
            <p class="third"></p>
        </div>
    </div>
</body>

p.first,p.second元素的字体大小都是:80% x 100% x 16px = 12.8px。
p.third元素的字体大小是:200% x 80% x 100% x 16px = 25.6px。

为什么p.second元素和p.first元素的字体大小相同?

p.second元素的字体大小继承其直接父元素div.second,而div.second元素的字体大小又直接继承其直接父元素div.first,如果不设置div.second元素的字体大小,p.second元素的字体大小就和其直接父元素的兄弟节点p.first元素的字体大小一致,都继承自div.first,而div.first元素的字体大小又是相对于body元素的。如果设置body的font-size=18px,那么p.first,p.second的字体大小:80% x 18px = 14.4px;p.third的字体大小:200% x 80% x 18px = 28.8px。

使用em单位表示字体大小

<body style="font-size:1em;">
    <div style="font-size:2em" class="first">
        <p class="first"></p>
        <div class="second">
            <p class="second"></p>
        </div>
        <div style="font-size:2em" class="third">
            <p class="third"></p>
        </div>
    <div>
</body>

p.first,p.second元素的字体大小都是:2em x 1em x 16px = 32px。
p.third元素的字体大小是:2em x 2em x 1em x 16px = 64px。

如果设置body的font-size=18px,那么p.first,p.second的字体大小:2em x 18px = 36px;p.third的字体大小:2em x 2em x 18px = 72px。

使用em的好处就是子元素的字体大小可以跟随父元素字体大小的改变而改变,当然没有十全十美的事情,这种好处在有些情况下也可能变成弊端,参见下面对rem的介绍。

既然em%单位在字体大小上是类似的,那字体大小为啥用em单位的多,用%单位的少?书写方便?

em原本是活版印刷术中度量水平宽度的单位,最开始是取自字母M的宽度,但是这种方式不通用,因为不是每种字体中都有字符M,但是每种字体都可以有高度,所以后来em就以字体高度计算。在CSS中,em是一种通用的单位长度测量单位。印刷中,em是用来度量水平单位的;CSS中,em既可以度量水平单位,又可以度量垂直单位。更多关于em的只是参见官方介绍


rem root em,CSS3新增的相对单位,相比于其他CSS3单位(ch,vw,vh,vmax,vmin)移动端兼容性强,android2.1+,iso4.1+。作用和em类似,唯一的区别就是em是相对父元素的,rem是相对html根节点的,即所有使用rem单位的子元素的字体大小都是相对根节点的。

<body style="font-size:1rem;">
    <div style="font-size:2rem" class="first">
        <p class="first"></p>
        <div style="font-size:3rem" class="second">
            <p class="second"></p>
        </div>
        <div style="font-size:3rem" class="third">
            <p class="third"></p>
        </div>
    <div>
</body>

p.first元素的字体大小是:2rem x 1rem x 16px = 32px。
p.second,p.third元素的字体大小都是:3rem x 1rem x 16px = 48px。

为什么p.second和p.third元素的字体大小相同?

p.second元素的字体大小继承自直接父元素div.second,div.second元素的字体大小用了rem单位表示,所以其字体大小直接相对于根元素html的字体大小,而p.third元素的字体大小继承自直接父元素div.third,div.third元素的字体大小也用了rem单位表示,所以它的字体大小也是相对于根元素html的字体大小的。如果设置html的font-size=18px,那么p.first元素的字体大小是: 2rem x 18px = 36px;p.second,p.third元素的字体大小是:3rem x 18px = 54px。

使用rem的好处:可以避免使用em带来的子元素字体大小逐层复合的连锁反应。

相关文章

  • 理解web开发中的em单位和rem单位

    ** em ** 是CSS2引入的相对单位,作为字体大小使用时和百分比单位类似,都是相对于最近的父元素设置字体大小...

  • Rem布局

    移动web开发之rem布局 rem基础 rem单位 rem (root em)是一个相对单位,类似于em,em是父...

  • 【基础】EM 还是 REM?这是一个问题!

    简言 应用象EM 和 REM这种相对长度单位进行页面排版是WEB开发中的最佳实践。在页面排版中较好应用EM 和 R...

  • 网络编程(九)移动端布局(3)

    这里将要讲解移动WEB开发之rem适配布局 一、 rem基础 rem (root em)是一个相对单位,类似于em...

  • em和rem

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

  • rem与em区别

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

  • 移动端开发-01

    rem布局 rem单位 rem (root em)是一个相对单位,类似于em,em是父元素字体大小。不同的是rem...

  • 移动 web 开发 —— rem 布局

    1. rem 基础 rem 单位 rem(root em)是一个相对单位,类似于 em,em 是父元素字体大小。 ...

  • rem布局

    em单位和rem单位区别 em作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表...

  • 移动web五 - Rem布局

    一、rem基础 1. rem单位 rem (root em)是一个相对单位,类似于em,em是父元素字体大小。不同...

网友评论

    本文标题:理解web开发中的em单位和rem单位

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