css里面的单位:em、rem有什么不同?

css里面的单位:em、rem有什么不同?

阅读 8.6k
3 个回答

em相对于父元素,rem相对于根元素,即html,一般 1em=16px,浏览器默认,为了计算方便,我们将font-size 设置为 16px* 0.625=10px 此时1em = 10px 举个列子

body {font-size: 62.5%}
div1 {width: 60em; /*60* 10=600px*/}
div2 {font-size: 20px; /*此时在div 中 1em= 20px*/}

总结起来就是 父元素不设置font-size的话,就继承body 1em=16px,假如你想计算方便可以将body的font-size 设置为 62.5%,rem比起来就相对好理解一点,

html {font-size: 16px;}

那么以后的都是 1rem=16px, 我是这么理解的,希望不要误导你!可以上MDN查看 相关信息。

结构

<body>
    <div class="div1"></div>
    <div class="div2"></div>      
</body>

em

body {font-size: 62.5%; color: #000; font-family: "微软雅黑";}
.div1 {height: 3em; background-color: #333; /*由于chrome字体默认是12px, 所以此时height=36px*/}
ul, ol {list-style: none;}
.div2 {font-size: 20px; height: 2em; background-color: #555; /*这里改变了font-size 所以height=40px*/}

rem

 html {font-size: 20px; color: #000; font-family: "微软雅黑";}
 .div1 {height: 3rem; background-color: #333; /*此时height=60px*/}
 ul, ol {list-style: none;}
 .div2 {font-size: 20px; height: 2rem; background-color: #555; /*改变font-size不在影响 所以height=40px*/}

em是相对于父元素的font-size属性值来计算的
rem是相对于html标签的font-size属性值来计算的

<html style="font-size:20px;">
    <body>
        <div style="font-size:10px;">
            <div style="font-size:1em;">1em*10=10px</div>
            <div style="font-size:1rem;">1rem*20=20px</div>
        </div>
    </body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题