em与rem的区别

本文探讨了CSS中em单位的使用及其可能导致的基准混乱问题,通过一个例子展示了如何计算嵌套元素的padding。同时,提到了rem作为根元素基准的解决方案,以避免层级依赖带来的困扰。建议在使用em时明确注释转换为px的值,并推荐使用rem以简化字体大小的计算。
摘要由CSDN通过智能技术生成

1 em

em简介

em一般是当前元素设置的字体大小的倍数
例如一个p段落设置font-size为16px, 那么 n em 就是 n*16 px

注意上述词语是一般
而如果设置当前font-size时也使用em
那么使用的是父元素的font-size

html标签如果设置font-size使用em
则使用的基准为浏览器默认字体大小

em的不足

考虑如下情况:

// html
<div id="father">
	<div id="son"></div>
</div>

// CSS
<style>
#father {
	font-size: 16px;
}

#son {
	font-size: 2em;
	padding: 2em;
}
</style>

那么son标签的padding为多少px?

答案是64px
先根据father的font-size(16px)确定son的font-size为2em(32px),
然后padding再依据son的font-size(32px)确定padding为2em(64px)

所以em在这种情况下使用容易导致混淆基准值
最好将使用了em的font-size写在首行并在旁边注释等价于多少px

再考虑下面情况:

<p>
    <div>
        <div>
            <div></div>
        </div>
    </div>
</p>
    
p {
    font-size: 16px;
}
div {
    font-size: 1.5em;
}

上面的div与p的font-size各自是多少呢?

<p>		16px
    <div>	24px
        <div>	36px
            <div>	54px
            </div>
        </div>
    </div>
</p>

对于这种直接对标签选择器且font-size中使用em的行为
当代码量多起来了的时候非常难以确定font-size的大小到底为多少
所以应当尽量避免这种写法

rem

为了弥补em的不足之处
设置了rem
rem即为 root em
顾名思义就是以根节点为基准然后乘以多少倍
解决了font-size使用em时以父节点的font-size为基准造成的问题

可以对根节点标签也就是html设置其font-size为多少em
然后后续使用相对的rem时就是按照html的font-size来计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BetterChinglish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值