HTML5中國
你應該知道的CSS文字大小單位PX、EM寥殖、PT
2013-07-17 11:19:0230css3教程
你應該知道的CSS文字大小單位PX嚼贡、EM粤策、PT
這里引用的是Jorux的“95%的中國網(wǎng)站需要重寫CSS”的文章误窖,題目有點嚇人霹俺,但是確實是現(xiàn)在國內(nèi)網(wǎng)頁制作方面的一些缺陷吭服。我一直也搞不清楚px與em之間的關系和特點艇棕,看過以后確實收獲很大。平時都是用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是相對長度單位王滤,相對于當前對象內(nèi)文本的字體尺寸雁乡。如當前對行內(nèi)文本的字體尺寸未被人為設置踱稍,則相對于瀏覽器的默認字體尺寸珠月。(引自CSS2.0手冊)
字體單位使用em能支持IE6下的字體縮放啤挎,在頁面中按ctrl+滾輪庆聘,字體以px為單位的網(wǎng)站沒有反應伙判。
px是絕對單位,不支持IE的縮放。
em是相對單位冠绢,網(wǎng)頁中的文字能放大和縮小弟胀。將行距(line-height)邮利,和縱向高度的單位都用em延届。保證縮放時候的整體性方庭。
任意瀏覽器的默認字體高都是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會繼續(xù)父級元素的字體大小赛蔫。
所以我們在寫CSS的時候呵恢,需要注意:
1. body選擇器中聲明Font-size=62.5%;(Font-size=63%;用于ie6兼容)
2. 將你的原來的px數(shù)值除以10渗钉,然后換上em作為單位;
3. 重新計算那些被放大的字體的em數(shù)值鳄橘。避免字體大小的重復聲明术徊。
也就是避免1.2 * 1.2= 1.44的現(xiàn)象赠涮。比如說你在#content中聲明了字體大小為1.2em笋除,那么在聲明p的字體大小時就只能是1em,而不是1.2em, 因為此em非彼em嗤瞎,它因繼續(xù)#content的字體高而變?yōu)榱?em=12px贝奇。
但是12px漢字例外,就是由以上方法得到的12px(1.2em)大小的漢字在IE中并不等于直接用12px定義的字體大小陕习,而是稍大一點该镣。這個問題 Jorux已經(jīng)解決,只需在body選擇器中把62.5%換成63%就能正常顯示了嫁审。原因可能是IE處理漢字時律适,對于浮點的取值精確度有限纠修。不知道有沒有其他的解釋。
單位pt的說明
在印刷排版中,point是一個絕對值,它等于1/72英寸,可以用尺子丈量的,物理的英寸。但是在css中pt含義卻并非如此汽纤。因為我們的顯示器被分割為了一個個的像素,單個像素只能有一種顏色 (為了簡化背传,這里暫不討論次像素反鋸齒技術),要在屏幕上顯示梳星,必須先把以 pt 為單位的長度轉換為以像素為單位的長度,這個轉換的媒介韵吨,就是 DPI (事實上,這里的所謂的 DPI盏浇,是操作系統(tǒng)和瀏覽器中使用的術語,即為 PPI, pixels per inch滴劲,和掃描儀鲁捏、打印機、數(shù)碼相機中的 DPI 是不同的概念)动羽。
例如,無論在哪個操作系統(tǒng)中拘哨,F(xiàn)irefox 瀏覽器默認的 DPI 都是 96,那么實際上 9pt = 9 * 1/72 * 96 = 12px。
所以磷账,雖然“DPI”中的“I”和“1pt 等于 1/72 inch”中的“inch”,都不代表物理上的英寸,但這兩個單位互相之間是相等的取募,也就在相乘中約掉了斗忌。
那么,真實的物理長度怎么計算呢?請拿出一把尺子,丈量你的顯示器的可見寬度 (我這里是 11.2992 英寸),除以橫向分辨率 (我這里是 1024 像素)界酒,得到的就是每個像素的物理長度庇谆。
現(xiàn)在我們可以回答這樣一個問題串述,網(wǎng)頁上 9pt 的字體究竟占用了多寬的空間?答案是: 9 * 1/72 * 96 * 11.2992 / 1024 = 0.1324 英寸 = 0.3363 厘米纲酗。
雖然pt是絕對單位,但是那只是針對輸出設備而言的新蟆,在文字排版工具(word觅赊,abobe)中是非常有用的字體單位。不管顯示器的分辨率是多少琼稻,打印在紙面上的結果是一樣的吮螺。
但是網(wǎng)頁主要為了屏幕顯示,而不是為了打印等其他需要的帕翻。而px能夠精確地表示元素在屏幕中的位置和大小鸠补。
當然。在dpi是96的情況下嘀掸,9pt=12px紫岩。
附px、em睬塌、%和pt換算表