·##概念介紹:
1.px(pixel,像素):是一個(gè)虛擬長(zhǎng)度單位改抡,是計(jì)算機(jī)系統(tǒng)的數(shù)字化長(zhǎng)度單位矢炼,如果px要換算成物理長(zhǎng)度,需要制定精度DPI(Dots Per Inch阿纤,每英寸像素?cái)?shù))句灌,在掃描打印時(shí)一般都有DPI可選。Windows系統(tǒng)默認(rèn)是96dpiApple系統(tǒng)默認(rèn)是72dpi。
2.em(相對(duì)長(zhǎng)度單位胰锌,相對(duì)于當(dāng)前對(duì)象內(nèi)文本的字體尺寸):是一個(gè)相對(duì)長(zhǎng)度單位骗绕,最初是指字母M的寬度,故名em∽拭粒現(xiàn)指的是字符寬度的倍數(shù)酬土,用類似百分比,如:0.8em格带,1.2em撤缴,2em等。通常1em=16px践惑。
3.rem(root em腹泌,根em):是CSS3新增的一個(gè)相對(duì)單位,這個(gè)單位引起了廣泛關(guān)注尔觉。這個(gè)單位與em有什么區(qū)別呢凉袱?區(qū)別在與使用rem為元素設(shè)定字體大小時(shí),仍然是相對(duì)大小侦铜,但相對(duì)的只是HTML根元素专甩。這個(gè)單位可謂集相對(duì)大小和絕對(duì)大小的優(yōu)點(diǎn)與一身,通過(guò)它既可以做到只修改根元素就成比列的調(diào)整所有字體大小钉稍,又可以避免字體大小逐層復(fù)合的連鎖反應(yīng)涤躲。目前,除了IE8及更早的版本以外贡未,所有的瀏覽器均已支持rem种樱。對(duì)于不支持它的瀏覽器,應(yīng)對(duì)方法也很簡(jiǎn)單俊卤,就是多寫(xiě)一個(gè)絕對(duì)單位的聲明嫩挤。這些瀏覽器會(huì)忽略rem設(shè)定的字體大小。
1.em和px的問(wèn)題
px為何物消恍?
px像素(pixel)岂昭。相對(duì)長(zhǎng)度單位。像素px數(shù)計(jì)相對(duì)于顯示器屏幕分辨率而言的狠怨。(引自CSS2.0手冊(cè))
em是相對(duì)長(zhǎng)度單位约啊,相對(duì)于當(dāng)前對(duì)象內(nèi)文本的字體尺寸,如當(dāng)前對(duì)行內(nèi)文本的字體尺寸未被人為設(shè)置佣赖,則相對(duì)于瀏覽器的默認(rèn)字體尺寸恰矩。(引自CSS2.0手冊(cè))
px的特點(diǎn)
1.IE無(wú)法調(diào)整那些使用px作為單位的字體的大小憎蛤;
2.國(guó)外的大部分網(wǎng)站能夠調(diào)整的原因在于其使用了em或rem作為字體單位枢里;
3.Firefox能夠調(diào)整px和em,rem,但是96%以上的中國(guó)網(wǎng)民使用的是IE瀏覽器(或內(nèi)核)栏豺。
em是何物彬碱?
em是指字體高,任意瀏覽器的默認(rèn)字體高都是16px奥洼。所以未經(jīng)調(diào)整的瀏覽器都符合:1em=16px巷疼;那么12px=0.75em,10px=0.625em灵奖。為了簡(jiǎn)化font-size的換算嚼沿,需要在css中的body選擇器忠聲明Font-size=62.5%,這就使em的值變?yōu)?6px*62.5%=10px瓷患,這樣12px=1.2em骡尽,10px=1em,也就是說(shuō)只需要將你的原來(lái)的px數(shù)值除以10擅编,然后換上em作為單位就行了攀细。
** em的特點(diǎn)**:
1em指的是一個(gè)字體的大小,它會(huì)繼承父級(jí)元素的字體大小爱态,因此并不是一個(gè)固定的值谭贪。任何瀏覽器的默認(rèn)字體都是16px。因此锦担,12px=0.75em俭识。實(shí)際應(yīng)用中為了方便換算,通常會(huì)設(shè)置如下樣式:
CSS代碼
html{font-size:63%洞渔;}
在中文的文章中套媚,一般會(huì)在段首空兩格。如果用px作為單位磁椒,對(duì)12px作為單位凑阶,對(duì)12px字體來(lái)說(shuō)需要空出24px,對(duì)14px字體來(lái)說(shuō)需要空出28px... ...這樣的換算非常不通用衷快,如果用上em單位,這個(gè)問(wèn)題就很好的解決了姨俩,1個(gè)字體的大小就是1em蘸拔,那么兩個(gè)字體的大小就是2em。因此环葵,只需這樣定義就可以了:
CSS代碼
**p{text-indent:2em调窍;}
**
em和px兩種字體單位的區(qū)別
字體單位應(yīng)該用em而不用px,原因簡(jiǎn)單來(lái)說(shuō)就是支持IE6下的字體縮放张遭,在頁(yè)面中按ctrl+滾輪邓萨,字體以px為單位的網(wǎng)站沒(méi)有響應(yīng)。px是絕對(duì)單位,不支持IE的縮放缔恳,em是相對(duì)單位宝剖。
不僅僅是字體,將行距(line-height)和縱向高度的單位都用em歉甚,可以保證縮放時(shí)候的整體性万细。
em有如下特點(diǎn):
1.em的值并不是固定的;
2.em會(huì)繼承父級(jí)元素的字體大小纸泄。
em重寫(xiě)步驟
1.body選擇器中聲明Font-size=62.5%赖钞;
2.將你原來(lái)的px數(shù)值除以10.然后換上em作為單位;
簡(jiǎn)單點(diǎn)吧聘裁,如果只需要以上兩步就能解決的話雪营,可能就沒(méi)人用px了。經(jīng)過(guò)以上兩步衡便,你會(huì)發(fā)現(xiàn)你的網(wǎng)站字體打得超乎想象献起。因?yàn)閑m的值不固定,又會(huì)繼承父級(jí)元素的大小砰诵,你可能會(huì)在content這個(gè)div里面把字體設(shè)置為1.2em征唬,也就是12px,然后你又把選擇器p的字體大小也設(shè)置為1.2em茁彭,但如果p屬于content的子級(jí)的話总寒,p的字體大下就不是12px,而是1.2em=1.212px=14.4px理肺。這是因?yàn)閏ontent的字體大小被設(shè)為1.2em摄闸,這個(gè)em值就繼承其父級(jí)元素body的大小,也就是16px62.5%1.2=12px妹萨,而p作為其子級(jí)年枕,em則繼承content的字體高,也就是12px乎完。所以p的1.2em就不再是12px熏兄,而設(shè)計(jì)后14.4px。
3.重新計(jì)算那些被放大的字體的em數(shù)值树姨。避免字體大小的重復(fù)聲明摩桶,也就是避免以上提到的1.21.2=1.44的現(xiàn)象。比如說(shuō)你在#content中聲明了字體的大小為1.2em帽揪,那么在聲明p中的字體大小時(shí)就只能是1em硝清,而不是1.2em,因?yàn)榇薳m非彼em转晰。它因繼承#content的字體高而變成了1em=12px芦拿。
IE中的12px漢字:
完成em轉(zhuǎn)換時(shí)還發(fā)現(xiàn)了一個(gè)詭異的現(xiàn)象士飒,就是由以上方法得到的12px(1.2em)大小的漢字在IE忠并不等于直接用12px定義的字體大小,而是稍大一點(diǎn)蔗崎。你只需在body選擇器中把62.5%換成63%就能很正常顯示了酵幕。原因可能是IE處理漢字時(shí)們對(duì)于浮點(diǎn)的取值精度有限,本現(xiàn)象只發(fā)生在12px的漢字蚁趁,英文不存在此現(xiàn)象裙盾。解決方法就是把style.css的62.5%換為63%。
一個(gè)px他嫡,em番官,pt單位轉(zhuǎn)換工具:
地址:http://pxtoem.com/
2.rem的特點(diǎn)
rem是CSS3新增的一個(gè)相對(duì)單位(root em,根em)钢属,這個(gè)單位引起了廣泛關(guān)注徘熔。這個(gè)單位與em有什么區(qū)別呢?區(qū)別在于使用rem偽元素設(shè)置字體大小時(shí)淆党,仍然是相對(duì)大小酷师,但相對(duì)的只是HTML根元素。這個(gè)單位可謂集相對(duì)大小和絕對(duì)大小的優(yōu)點(diǎn)于一身染乌,通過(guò)它既可以做到只修改根元素就成比例地調(diào)整所有的字體大小山孔,又可以避免字體大小逐層復(fù)合的連鎖反應(yīng)。目前荷憋,除了IE8及更早的版本外台颠,所有的瀏覽器均支持rem。對(duì)于不支持它的瀏覽器勒庄,應(yīng)對(duì)方法也很簡(jiǎn)單串前,就是多寫(xiě)一個(gè)絕對(duì)單位的聲明。這些瀏覽器會(huì)忽略用rem設(shè)定的字體的大小实蔽。
舉例:
p{font-size:14px;font-size:0.875rem;}
注意:選擇用什么字體單位主要由你的項(xiàng)目來(lái)決定荡碾,如果你的用戶群都是用最新版本的瀏覽器,那推薦使用rem局装,如果考慮兼容性坛吁,那就是用px或者兩者同時(shí)使用。