關(guān)于rem和em的區(qū)別
rem
?rem:`表示根元素的字體大小`(通常為``)
下面是一個(gè)動(dòng)態(tài)設(shè)置html字體大小的公式
```
~function () {
window.addEventListener('resize', computed);
// 添加事件,當(dāng)設(shè)備尺寸改變,就執(zhí)行computed函數(shù)
computed();
function computed() {
var deviceW = document.documentElement.clientWidth || document.body.clientWidth;
// 獲取設(shè)備的寬度
if (deviceW > 640) return;
// 當(dāng)前案例是以640的設(shè)計(jì)稿為例,判斷,若是設(shè)備尺寸超過(guò)640,就不在執(zhí)行computed
document.documentElement.style.fontSize = deviceW / 640 * 100 + 'px';
// 100 這里的100是在屏幕尺寸為640的時(shí)候,html字體大小為100px,之所以設(shè)置100,是為了便于計(jì)算
// 設(shè)置html的字體大小? 這里是以640的設(shè)計(jì)稿為基準(zhǔn),當(dāng)我們使用的設(shè)備寬度(deviceW)剛好為640的時(shí)候,html的? 字體大小為100px; 當(dāng)設(shè)備大小改變,小于640的時(shí)候, 就會(huì)觸發(fā)resize函數(shù),computed執(zhí)行,動(dòng)態(tài)的獲取設(shè)備的寬度,然后除以640,就能計(jì)算出當(dāng)前設(shè)備大小是原設(shè)計(jì)稿的百分之多少,然后乘以100,就能計(jì)算出當(dāng)前屏幕寬度下html的字體大小為多少? ? ? ? ? ? }
}();
```
`document.documentElement.style.fontSize `=xxxx? 這里是設(shè)置html字體大小
?以當(dāng)前的計(jì)算公式,若是設(shè)備尺寸為640,計(jì)算后`html`的字體大小為100px; `1rem` 就是100px; 若是屏幕尺寸縮小到320,`computed`函數(shù)會(huì)自動(dòng)獲取屏幕的寬度,重新計(jì)算html的字體大小,此時(shí)`html`字體大小應(yīng)為50,所以`1rem`就等于50px,
而我們布局采用`rem`布局, `width:.5rem`,? 意思就是某個(gè)物體的寬度值相對(duì)于html的字體大小的值的百分比,`width:.5rem` 就是`width`的值相對(duì)于`html`字體大小的百分比為50%。因?yàn)閔tml隨著屏幕的大小改變,會(huì)不停的變化,所以width的值也會(huì)跟著改變
em
em和rem一樣都是相對(duì)單位,只不過(guò)em是以父級(jí)的font-size值決定的,當(dāng)最近的父級(jí)沒(méi)有設(shè)置font-size時(shí),就會(huì)向上一層找,若是還沒(méi)有就會(huì)一直向上找,直到找到html,若是還沒(méi)有,就按瀏覽器默認(rèn)字體大小,16px(在火狐和chrome);
px
?PX實(shí)際上就是像素,用PX設(shè)置字體大小時(shí),比較穩(wěn)定和精確
?一般瀏覽器支持的最小字體大小應(yīng)該為12px;