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>