彻底弄懂css中单位px和em,rem的区别

 我来答
超凡且憨厚灬饼子A
2017-09-26 · TA获得超过9400个赞
知道大有可为答主
回答量:5551
采纳率:44%
帮助的人:2399万
展开全部

所有现代浏览器中,默认网页字号是16px大小,默认1em=16px;那么0.75em=12px;(16*0.75);

但是,你定义了一个body{font-size:32px;},这时1em=32px;假如你需要一个16px的字体,就要写:font-size: 0.5em;

再然后,em单位很操蛋的是子元素的字号是根据上一级父元素的字号来算的,看例子:

body{font-size: 32px;}/*定义了1em=32px*/
div{font-size: 0.5em;}
div p{font-size: 0.75em;}

<html>
    我是32px大小
    <div>
        我是16px大小,因为定义了div{font-size: 0.5em;}即1em的一半
        <p>那么问题来了,这行p的字号定义成了0.75em,他不是body定义的32px的0.75,而是父div字号16px的0.75</p>
    </div>
</html>

如果p里面再嵌套一个span元素,你要定义他的字号大小为24px,你先要算出目前p的字号实际大小为12px,然后乘以2才能得到span的正确字号,即:span{font-size: 2em;}

这样嵌套一多了,算子元素的字号是很不直观的,不知道css的这个设计是出于什么目的或是设计时是不是没注意到这个问题会带来计算上的麻烦,于是后来又有了rem单位。

rem单位就简单多了,只针对html根元素,比如body里面你定了font-size: 24px;(1em=24px;),那么无论你在哪个子元素上,你想要个12px的字体,只用定义font-size: 0.5em;即可,你不用去担心它上级元素的字号是16px还是24px;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式