搞清楚CSS中單位px與em之間的關(guān)系和特點
發(fā)布時間:2014-02-27 15:15:37 作者:佚名
我要評論

一直也搞不清楚px與em之間的關(guān)系和特點,看過以后確實收獲很大,用px來定義字體,所以無法用瀏覽器字體放大的功能,下面為大家講解下
這里引用的是Jorux的“95%的中國網(wǎng)站需要重寫CSS”的文章,題目有點嚇人,但是確實是現(xiàn)在國內(nèi)網(wǎng)頁制作方面的一些缺陷。我一直也搞不清楚px與em之間的關(guān)系和特點,看過以后確實收獲很大。平時都是用px來定義字體,所以無法用瀏覽器字體放大的功能,而國外大多數(shù)網(wǎng)站都可以在IE下使用。因為
1、IE無法調(diào)整那些使用px作為單位的字體大??;
2、國外的大部分網(wǎng)站能夠調(diào)整的原因在于其使用了em作為字體單位;
3、Firefox能夠調(diào)整px和em,但是96%以上的中國網(wǎng)民使用IE瀏覽器(或內(nèi)核)。
px像素(Pixel)。相對長度單位。像素px是相對于顯示器屏幕分辨率而言的。(引自CSS2.0手冊)
em是相對長度單位。相對于當(dāng)前對象內(nèi)文本的字體尺寸。如當(dāng)前對行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對于瀏覽器的默認(rèn)字體尺寸。(引自CSS2.0手冊)
任意瀏覽器的默認(rèn)字體高都是16px。所有未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變?yōu)?16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數(shù)值除以10,然后換上em作為單位就行了。
em有如下特點:
1、em的值并不是固定的;
2、em會繼承父級元素的字體大小。
所以我們在寫CSS的時候,需要注意兩點:
1、body選擇器中聲明Font-size=62.5%;
2、將你的原來的px數(shù)值除以10,然后換上em作為單位;
3、重新計算那些被放大的字體的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。
但是12px漢字例外,就是由以上方法得到的12px(1.2em)大小的漢字在IE中并不等于直接用12px定義的字體大小,而是稍大一點。這個問題 Jorux已經(jīng)解決,只需在body選擇器中把62.5%換成63%就能正常顯示了。原因可能是IE處理漢字時,對于浮點的取值精確度有限。不知道有沒有其他的解釋。
1、IE無法調(diào)整那些使用px作為單位的字體大??;
2、國外的大部分網(wǎng)站能夠調(diào)整的原因在于其使用了em作為字體單位;
3、Firefox能夠調(diào)整px和em,但是96%以上的中國網(wǎng)民使用IE瀏覽器(或內(nèi)核)。
px像素(Pixel)。相對長度單位。像素px是相對于顯示器屏幕分辨率而言的。(引自CSS2.0手冊)
em是相對長度單位。相對于當(dāng)前對象內(nèi)文本的字體尺寸。如當(dāng)前對行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對于瀏覽器的默認(rèn)字體尺寸。(引自CSS2.0手冊)
任意瀏覽器的默認(rèn)字體高都是16px。所有未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變?yōu)?16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數(shù)值除以10,然后換上em作為單位就行了。
em有如下特點:
1、em的值并不是固定的;
2、em會繼承父級元素的字體大小。
所以我們在寫CSS的時候,需要注意兩點:
1、body選擇器中聲明Font-size=62.5%;
2、將你的原來的px數(shù)值除以10,然后換上em作為單位;
3、重新計算那些被放大的字體的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。
但是12px漢字例外,就是由以上方法得到的12px(1.2em)大小的漢字在IE中并不等于直接用12px定義的字體大小,而是稍大一點。這個問題 Jorux已經(jīng)解決,只需在body選擇器中把62.5%換成63%就能正常顯示了。原因可能是IE處理漢字時,對于浮點的取值精確度有限。不知道有沒有其他的解釋。
相關(guān)文章
- 說說css的幾種距離吧,大致有px、em、pt、pc、in、mm、cm、ex八種,其中最常見到的是px,我還見到過的有ex和mm、cm,當(dāng)然后兩個在當(dāng)年見的更多2014-07-28
CSS Font-Size: em、px 、pt 、Percent之間的關(guān)系及換算
這篇文章主要介紹了CSS Font-Size: em、 px 、pt 、Percent之間的關(guān)系及換算,本篇整理的還是比較詳細(xì)的,需要的朋友可以參考下2014-05-15- 如果字體未做任何CSS設(shè)定或者元素的設(shè)定,默認(rèn)的字體是12pt或者16px,或者1em,或者font size=3下面有個不錯的em、px、pt長度單位轉(zhuǎn)換示例,不懂的朋友可以參考下2013-11-07
- 網(wǎng)站制作中字體單位應(yīng)該用em而不用px,原因簡單來說就是支持IE6下的字體縮放,在頁面中按ctrl+滾輪,字體以px為單位的網(wǎng)站沒有反應(yīng),在本文將為大家詳細(xì)介紹下2013-09-16
- css中的長度單位在網(wǎng)頁布局中經(jīng)常會用到(em/ex/px/pt),至于在什么情況下使用,怎么用將在下文為大家詳細(xì)介紹下2013-06-16
學(xué)習(xí)CSS了解單位em和px的區(qū)別-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)
這里引用的是Jorux的“95%的中國網(wǎng)站需要重寫CSS”的文章,題目有點嚇人,但是確實是現(xiàn)在國內(nèi)網(wǎng)頁制作方面的一些缺陷。我一直也搞不清楚px與em之間的關(guān)系和特點2008-10-17- 很長一段時間,我都使用12px作為網(wǎng)站的主要字體大小,10px太小,眼睛很容易疲勞2008-10-17
CSS教程:簡單理解em-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)
px比em更加容易使用,em指字體高,任意瀏覽器的默認(rèn)字體高都是16px。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px,所以10px=0.625em。為了簡化font-size的換算,需要在css中的bod2008-10-17- 這篇文章主要介紹了CSS中單位px與em的區(qū)別 的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-05