關於css中的em單位

使用px定義字體的話無法用瀏覽器字體放大功能,還有在做響應式網頁時,字體響應大小也非常不方便。

px:像素(plxels),相對長度單位。像素px是相對於顯示器屏幕分辨率而言的。

em:相對長度單位。相對於當前對象內文本的字體尺寸(em是基於排版轉換的一種量度,在css中em的大小參考字符框的高度)。

默認1em=16px,那爲什麼等於16px?因爲瀏覽器默認的字體大小都是16px,所以沒有重新設置瀏覽器默認字體大小的話1em就等於16px。在頁面裏要用到em作爲單位的話,默認的1em=16px會使得在計算他們轉換的值時非常不方便,比如我要把一個塊裏面的內容字體大小設置成18px,但我只想用em做爲單位,那麼情況就會這樣,1em=16px,1px=0.0625em,得18px=1.125em(0.0625em*18)。擦,多麻煩!所以爲了簡化px和em之間的換算,需要在body裏定義font-size:62.5%,即將瀏覽器初始化爲即1em=10px,這樣的話,上面的font-size:18px就等於font-size:1.8em

上面說過在em的大小參考字符框的高度,所以在css其他屬性中,包括width,height,margin,padding,text-indent等使用em作爲單位的話,大小計算也跟計算font-size一樣的道理。

計算公式:1/父元素font-size值*需要轉換的px=em值       (PS:父元素font-size的單位沒有關係,無論px還是em)

不過如果當一個元素本身設置了字體大小,其自身的width,height,margin,padding等屬性是以自己的font-size值去計算em的值,在這個元素下的子元素也同理。

所以當元素自身有設置font-size時,除font-size外其他屬性的計算公式應該是這樣:

1/元素自身的font-size值*需要轉換的px=em值

在響應式中的應用

在響應式網頁中,字體在不同尺寸的設備下要有不同的大小,以達到最佳的閱讀效果,比如一個響應式頁面在手機和平板裏的字體大小是不一樣的,所以用em作爲字體大小單位的話,在響應式佈局中改變字體大小非常方便。

運行以上代碼,改變窗口大小,可看到當窗口大小大於或小於指定尺寸時字體會隨着變化,在所有字體都用em作爲單位的情況下,只需要改變body{font-size:xx%}即可,當然這只是隨便舉個簡單的例子,看具體情況去設置。


em有如下特點:

1、em的值並不是固定的;

2、em會繼承父級元素的字體大小。

所以我們在寫CSS的時候,需要注意兩點:

1、body選擇器中聲明Font-size=62.5%;

2、將你的原來的px數值除以10,然後換上em作爲單位;

3、重新計算那些被放大的字體的em數值。避免字體大小的重複聲明。

也就是避免1.2 * 1.2= 1.44的現象。比如說你在#content中聲明瞭字體大小爲1.2em,那麼在聲明p的字體大小時就只能是1em,而不是1.2em, 因爲此em非彼em,它因繼承#content的字體高而變爲了1em=12px。

但是12px漢字例外,就是由以上方法得到的12px(1.2em)大小的漢字在IE中並不等於直接用12px定義的字體大小,而是稍大一點。這個問題 Jorux已經解決,只需在body選擇器中把62.5%換成63%就能正常顯示了。原因可能是IE處理漢字時,對於浮點的取值精確度有限。不知道有沒有其他的解釋。


原文鏈接1

原文鏈接2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章