點我css
px是一個虛擬長度單位,是計算機系統的數字化圖像長度單位,若是px要換算成物理長度,須要指定精度DPI(Dots Per Inch,每英寸像素數),在掃描打印時通常都有DPI可選。Windows系統默認是96dpi,Apple系統默認是72dpi。html
em
指字體高,全部瀏覽器的默認字體高都是16px
。因此未經調整的瀏覽器都符合: 1em=16px
。那麼12px=0.75em
, 10px=0.625em
。爲了簡化font -size
的換算,須要在css中的body選擇器中聲明Font-size=62.5%
,這就使em
值變爲16px*62.5%=10px
, 這樣12px=1.2em
, 10px=1em
, 也就是說只須要將你的原來的px數值除以10,而後換上em做爲單位就好了。瀏覽器
1em
指的是一個字體的大小,它會繼承父級元素的字體大小,因此不是一個固定的值。任何瀏覽器的默認字體大小都是16px
。因此12px = 0.75em
。實際應用中爲了方便換算,一般會以下設置樣式:工具
body { font-size: 62.5%; }
這樣,1em = 10px
。經常使用的1.2em
上就是12px
。字體
在中文文章的格式中,每一個段落開頭都要空出2格,若是用px作單位,對於12px的字體則須要24px,以此類推,可是對於em來講就相對簡單了。網站
p { text-indent: 2em; }
em是想對父元素的font-size
屬性來決定字高的。那麼在多級嵌套下就會出現1.2em * 1.2em = 1.44em
的問題出現。如:code
<style> body { font-size: 62.5%; } .container { font-size: 1.2em; } .container p { font-size: 1.2em; } </style> <div class="container"> 我是文字1 <p>我是文字2</p> </div>
在上述例子中'我是文字2'
會比'我是文字1'
大,由於p
的font-size
屬性是基於1em = 12px
的字高去計算自身內部的em
值:htm
/* 1em = 16px -> 計算後 1em = 10px */ body { font-size: 62.5%; } /* 1em = 10px -> 計算後 1em = 12px */ /* 在container中的字體 都會爲12px */ .container { font-size: 1.2em; } /* 1em = 12px -> 計算後 1em = 14.4px */ /* 在p中的字體 都會爲14.4px */ .container p { font-size: 1.2em; }
因此若是想在p
中使用一樣大小的字,不能設置爲1.2em
,只能設置爲1em
。繼承
12px
(1.2em)大小的漢字在IE中並不等於直接用12px
定義的字體大小,而是稍大一點。你只需在body
選擇器中把62.5%
換成63%
就能正常顯示了。緣由多是IE處理漢字時,對於浮點的取值精確度有限。rem
該象只發生在
12px
的漢字,英文不存在此現象。
body { font-size: 63%; }
rem
是CSS3新增的一個相對單位(root em,根em)。這個單位與em的區別在於使用rem
相對的是HTML
根元素。只要根元素不修改font-size
屬性,那麼rem
的想對大小不會變,而em
是相對父元素的font-size
設置想對大小。
能夠避免em
字體大小逐層複合的連鎖反應。目前,除了IE8
及更早版本外,全部瀏覽器均已支持rem
。對於不支持它的瀏覽器,應對方法也很簡單,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略用rem設定的字體大小。
p { font-size: 14px; font-size: .875rem; }
不會出現像em
那樣1.2em * 1.2em = 1.44em
的狀況出現,由於rem
是相對html
的font-size
設置,而em
是相對父元素的font-size
<style> html { font-size: 62.5%; } .container { font-size: 1.2rem; } .container p { font-size: 1.2rem; } </style> <div class="container"> <!-- '我是文字1'和'我是文字2'是同樣大的 --> 我是文字1 <p>我是文字2</p> </div>
必須設置html的css樣式,不然會按照默認的
1rem = 16px
。
CSS3新增的特性,因此只有支持C3的瀏覽器才兼容。解決方法低版本瀏覽器使用px,高版本使用rem。