PX:
PX實際上就是像素,用PX設(shè)置字體大小時荞下,比較穩(wěn)定和精確伶选。但是這種方法存在一個問題史飞,當(dāng)用戶在瀏覽器中瀏覽我們制作的Web頁面時,如果改變了瀏覽器的縮放仰税,這時會使用我們的Web頁面布局被打破构资。這樣對于那些關(guān)心自己網(wǎng)站可用性的用戶來說,就是一個大問題了陨簇。因此吐绵,這時就提出了使用“em”來定義Web頁面的字體。
EM:
EM就是根據(jù)基準(zhǔn)來縮放字體的大小河绽。EM實質(zhì)是一個相對值己单,而非具體的數(shù)值。這種技術(shù)需要一個參考點耙饰,一般都是以<body>的“font-size”為基準(zhǔn)纹笼。如WordPress官方主題Twenntytwelve的基準(zhǔn)就是14px=1em。
另外苟跪,em是相對于父元素的屬性而計算的廷痘,如果想計算px和em之間的換算,這個網(wǎng)站不錯件已,輸入數(shù)據(jù)就可以px和em相互計算笋额。狠擊這里:px和em換算
所以我們在寫CSS的時候,需要注意兩點:
- body選擇器中聲明Font-size=62.5%篷扩;
- 將你的原來的px數(shù)值除以10兄猩,然后換上em作為單位;
- 重新計算那些被放大的字體的em數(shù)值鉴未。避免字體大小的重復(fù)聲明枢冤。
也就是避免1.2 * 1.2= 1.44的現(xiàn)象。比如說你在#content中聲明了字體大小為1.2em歼狼,那么在聲明p的字體大小時就只能是1em掏导,而不是1.2em, 因為此em非彼em,它因繼承#content的字體高而變?yōu)榱?em=12px羽峰。
Rem:
EM是相對于其父元素來設(shè)置字體大小的,這樣就會存在一個問題添瓷,進行任何元素設(shè)置梅屉,都有可能需要知道他父元素的大小。而Rem是相對于根元素<html>鳞贷,這樣就意味著坯汤,我們只需要在根元素確定一個參考值。
例如:根節(jié)點設(shè)置font-size:625%;那么100px大小的就是1rem搀愧,現(xiàn)在谷歌瀏覽器字體的最小標(biāo)準(zhǔn)惰聂,一般是12px疆偿,所以要想根節(jié)點以10的倍數(shù)來計算rem的值,就得把原來的62.5%(這里的62.5%是根據(jù)瀏覽器的默認(rèn)大小來計算搓幌,瀏覽器默認(rèn)大小是16px杆故,這里的62.5%是根據(jù)10/16得到的。這里的10是你想要設(shè)置的字體大小)擴大10被溉愁!也就是100px,所以100px大小的rem的值是1rem处铛!
當(dāng)然,這只是其中的一種方法拐揭!
現(xiàn)在來補充一下撤蟆,根據(jù)這段時間的實踐!rem中的html根節(jié)點定義可以是font-size:20px堂污;所謂的font-size:10px or 62.5%家肯,擴大兩倍!就是font-size:20px盟猖;意思就是大一點又不會死讨衣,所以決定還是是用font-size:20px;當(dāng)然根據(jù)項目需要扒披,可以定義任意數(shù)值值依!但是不要低于瀏覽器的最低字號!5浮愿险!
瀏覽器的兼容性
除了IE6-IE8r,其它的瀏覽器都支持em和rem屬性价说,px是所有瀏覽器都支持辆亏。
因此為了瀏覽器的兼容性,可“px”和“rem”一起使用鳖目,用"px"來實現(xiàn)IE6-8下的效果扮叨,然后使用“Rem”來實現(xiàn)代瀏覽器的效果。
一個例子:
p {font-size:14px; font-size:.875rem;}
特別注明一下领迈,瀏覽器字體的默認(rèn)大小是16px彻磁;
比如假設(shè),我們設(shè)置html的字體大小的值為 html{font-size: 87.5%;}(也就是14px)狸捅。然后其他的字體就是將你要的值除以14得到的值衷蜓;比如寬度是960px;換算成rem就是960/14=68.57142857142857rem尘喝;