這篇文章給大家分享的是有關(guān)css中px、em、rem有哪些區(qū)別的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的福安網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
區(qū)別:px表示像素,是相對長度單位,是相對于顯示器屏幕分辨率來設(shè)置字體大小的,不支持IE的縮放;em是相對長度單位,是相對于其父元素來設(shè)置字體大小的,支持IE的縮放;rem是相對長度單位,是相對HTML根元素來設(shè)置字體大小的。
PX,EM和REM的定義
px表示像素,不會因為其他元素的尺寸變化而變化。
像素的大小是會“變”的,也稱為“相對長度”,越高位的像素,其擁有的色板也就越豐富,越能表達(dá)顏色的真實感。
em表示相對于父元素的字體大小,em是相對單位,沒有一個固定的度量值,而是由其他元素尺寸來決定的相對值。
em是相對長度單位,相對于當(dāng)前對象內(nèi)文本的字體尺寸,如當(dāng)前對行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對于瀏覽器的默認(rèn)字體尺寸,國外使用比較多。
任意瀏覽器的默認(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)椋?6px*62.5%=10px;這樣12px=1.2em;10px=1em,也就是說只需要將你的原來的px數(shù)值除以10,然后換上em作為單位就行了。
REM是相對單位,是相對HTML根元素。這個單位可謂集相對大小和絕對大小的優(yōu)點于一身,通過它既可以做到只修改根元素就成比例地調(diào)整所有字體大小,又可以避免字體大小逐層復(fù)合的連鎖反應(yīng)。
CSS樣式表中px、em和rem單位的特點
一般情況下,我們平時都是用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)核)。
那么,css單位px、em和rem的特點分別是什么呢?
1、px的特點
PX實際上就是像素,用PX設(shè)置字體大小時,比較穩(wěn)定和精確。
但是這種方法存在一個問題,當(dāng)用戶在瀏覽器中瀏覽我們制作的Web頁面時,如果改變了瀏覽器的縮放,這時會使用我們的Web頁面布局被打破,這樣對于那些關(guān)心自己網(wǎng)站可用性的用戶來說,就是一個大問題了。
因此,這時就提出了使用“em”來定義Web頁面的字體。
2、em的特點
EM就是根據(jù)基準(zhǔn)來縮放字體的大小,EM實質(zhì)是一個相對值,而非具體的數(shù)值,這種技術(shù)需要一個參考點,一般都是以
的“font-size”為基準(zhǔn),如WordPress官方主題Twenntytwelve的基準(zhǔn)就是14px=1em。通常來說,em有如下特點:
(1)、em的值并不是固定的;
(2)、em會繼承父級元素的字體大小。
所以,我們在寫CSS的時候,需要注意以下3點:
(1)、body選擇器中聲明Font-size=62.5%;
(2)、將你的原來的px數(shù)值除以10,然后換上em作為單位;
如果只需要以上兩步就能解決問題的話,可能就沒人用px了。經(jīng)過以上兩步,你會發(fā)現(xiàn)你的網(wǎng)站字體大得出乎想象,因為em的值不固定,又會繼承父級元素的大小,你可能會在content這個div里把字體大小設(shè)為1.2em, 也就是12px。
然后你又把選擇器p的字體大小也設(shè)為1.2em,但如果p屬于content的子級的話,p的字體大小就不是12px,而是1.2em= 1.2 * 12px=14.4px,這是因為content的字體大小被設(shè)為1.2em,這個em值繼承其父級元素body的大小,也就是16px * 62.5% * 1.2=12px,而p作為其子級,em則繼承content的字體高,也就是12px,所以p的1.2em就不再是12px,而是14.4px。
(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定義的字體大小,而是稍大一點。這個問題已經(jīng)解決,只需在body選擇器中把62.5%換成63%就能正常顯示了,原因可能是IE處理漢字時,對于浮點的取值精確度有限,不知道有沒有其他的解釋和優(yōu)化方法(關(guān)于更多細(xì)節(jié)的優(yōu)化,可查看馬海祥博客《看看那些能提高效率卻容易被人忽略的CSS細(xì)節(jié)》的相關(guān)介紹)。
3、rem的特點
rem是CSS3新增的一個相對單位(root em,根em),這個單位引起了廣泛關(guān)注。
EM是相對于其父元素來設(shè)置字體大小的,這樣就會存在一個問題,進(jìn)行任何元素設(shè)置,都有可能需要知道他父元素的大小,而Rem是相對于根元素,這樣就意味著,我們只需要在根元素確定一個參考值。
目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。
對于不支持它的瀏覽器,應(yīng)對方法也很簡單,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略用rem設(shè)定的字體大小。
下面就是一個例子:
p {font-size:14px; font-size:.875rem;}
CSS樣式表中px、em和rem單位的區(qū)別
通常情況下,我們區(qū)分px和em的差異就是說:px是絕對單位,不支持IE的縮放,em是相對單位,支持IE的縮放,其實,css單位em、px和rem的區(qū)別,詳細(xì)來說,有以下幾點:
1、PX:像素
PX是相對長度單位,它是相對于顯示器屏幕分辨率而言的。
優(yōu)缺點:比較穩(wěn)定和精確,但在瀏覽器中放大或縮放瀏覽頁面時會出現(xiàn)頁面混亂的情況。
2、EM
EM:是相對長度單位,EM是相對于父元素來設(shè)計字體大小的。如果當(dāng)前對行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對于瀏覽器的默認(rèn)字體尺寸。
優(yōu)缺點:EM的值并不是固定的,它會繼承父級元素的字體大小。
PX和EM的之間的相互轉(zhuǎn)換:
任意瀏覽器的默認(rèn)字體高都是16px。所有未經(jīng)調(diào)整的瀏覽器都符合:1em=16px。那么,12px=0.75em,10px=0.625em。
為了使用方便,用em時,我們通常在CSS中的body選擇器中聲明font-size=62.5%(使em值變?yōu)椋?6px*62.5%=10px),之后,你只需要將你使用的px值除以10,即可得到em值,如:12px=1.2em,10px=1em。
3、REM
REM是CSS3新增的一個相對單位,REM是相對單位,是相對HTML根元素。
這個單位可謂集相對大小和絕對大小的優(yōu)點于一身,通過它既可以做到只修改根元素就成比例地調(diào)整所有字體大小,又可以避免字體大小逐層復(fù)合的連鎖反應(yīng)。
目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。
感謝各位的閱讀!關(guān)于css中px、em、rem有哪些區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!