首頁  >  文章  >  web前端  >  css中px、em、rem的差別是什麼?

css中px、em、rem的差別是什麼?

青灯夜游
青灯夜游原創
2020-11-09 15:14:528513瀏覽

區別:px表示像素,是相對長度單位,是相對於顯示器螢幕解析度來設定字體大小的,不支援IE的縮放;em是相對長度單位,是相對於其父元素來設置字體大小的,支援IE的縮放;rem是相對長度單位,是相對HTML根元素來設定字體大小的。

css中px、em、rem的差別是什麼?

推薦教學:CSS影片教學

##PX, EM和REM的定義

px表示像素,不會因為其他元素的尺寸變化而改變。

像素的大小是會“變”的,也稱為“相對長度”,越高位的像素,其擁有的色板也就越豐富,越能表達顏色的真實感。

em表示相對於父元素的字體大小,em是相對單位,沒有固定的度量值,而是由其他元素尺寸決定的相對值。

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作為單位就行了。

REM是相對單位,是相對HTML根元素。這個單位可謂集相對大小和絕對大小的優點於一身,透過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層複合的連鎖反應。

CSS樣式表中px、em和rem單位的特徵

一般情況下,我們平常都是用px來定義字體,所以無法用瀏覽器字體放大的功能,而國外大多數網站都可以在IE下使用,這主要是因為:

#(1)、IE無法調整那些使用px作為單位的字體大小;

(2)、國外的大部分網站能夠調整的原因在於其使用了em作為字體單位;

#(3)、Firefox能夠調整px和em,但是96%以上的中國網民使用IE瀏覽器(或核心)。

那麼,css單位px、em和rem的特徵分別是什麼呢?

1、px的特點

PX其實就是像素,用PX設定字體大小時,比較穩定和精確。

但是這種方法有一個問題,當使用者在瀏覽器中瀏覽我們製作的網頁頁面時,如果改變了瀏覽器的縮放,這時會使用我們的網頁佈局被打破,這樣對於那些關心自己網站可用性的使用者來說,就是一個大問題了。

因此,這時就提出了使用「em」來定義Web頁面的字體。

2、em的特點

EM就是根據基準來縮放字體的大小,EM實質是相對值,而非具體的數值,這種技術需要一個參考點,一般都是以的「font-size」為基準,如WordPress官方主題Twenntytwelve的基準就是14px=1em。

通常來說,em有以下特點:

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

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

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

(1)、body選擇器中宣告Font-size=62.5%;

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

如果只需要以上兩步就能解決問題的話,可能就沒人用px了。經過以上兩步,你會發現你的網站字體大得出乎想像,因為em的值不固定,又會繼承父級元素的大小,你可能會在content這個div裡把字體大小設為1.2em,也就是12px。

然後你又把選擇器p的字體大小也設為1.2em,但如果p屬於content的子級的話,p的字體大小就不是12px,而是1.2em= 1.2 * 12px=14.4 px,這是因為content的字體大小被設為1.2em,這個em值繼承其父級元素body的大小,也就是16px * 62.5% * 1.2=12px,而p作為其子級,em則繼承content的字體高,也就是12px,所以p的1.2em就不再是12px,而是14.4px。

(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定義的字體大小,而是稍大一點。這個問題已經解決,只要在body選擇器中把62.5%換成63%就能正常顯示了,原因可能是IE處理漢字時,對於浮點的取值精確度有限,不知道有沒有其他的解釋和最佳化方法(更多細節的最佳化,可查看馬海祥部落格《看看那些能提高效率卻容易被忽略的CSS細節》的相關介紹)。

3、rem的特點

rem是CSS3新增的一個相對單位(root em,根em),這個單位引起了廣泛關注。

EM是相對於其父元素來設定字體大小的,這樣就會存在一個問題,進行任何元素設置,都有可能需要知道他父元素的大小,而Rem是相對於根元素< ;html>,這樣就意味著,我們只需要在根元素中確定一個參考值。

目前,除了IE8及更早版本外,所有瀏覽器均已支援rem。

對於不支援它的瀏覽器,應對方法也很簡單,就是多寫一個絕對單位的宣告。這些瀏覽器會忽略用rem設定的字體大小。

下面就是一個例子:

p {font-size:14px; font-size:.875rem;}

CSS樣式表中px、em和rem單位的區別

通常情況下,我們區分px和em的差異就是說:px是絕對單位,不支援IE的縮放,em是相對單位,支援IE的縮放,其實,css單位em、px和rem的區別,詳細來說,有以下幾點:

1、PX:像素

PX是相對長度單位,它是相對於顯示器螢幕解析度而言的。

優缺點:比較穩定和精確,但在瀏覽器中放大或縮放瀏覽頁面時會出現頁面混亂的情況。

2、EM

EM:是相對長度單位,EM是相對於父元素來設計字體大小的。如果目前對行內文字的字體尺寸未被人為設置,則相對於瀏覽器的預設字體尺寸。

優缺點:EM的值並不是固定的,它會繼承父級元素的字體大小。

PX和EM的之間的相互轉換:

css中px、em、rem的差別是什麼?

任何瀏覽器的預設字體高都是16px。所有未經調整的瀏覽器都符合:1em=16px。那麼,12px=0.75em,10px=0.625em。

為了使用方便,用em時,我們通常在CSS中的body選擇器中宣告font-size=62.5%(使em值變成:16px*62.5%=10px),之後,你只需要將你使用的px值除以10,即可得到em值,如:12px=1.2em,10px=1em。

3、REM

REM是CSS3新增的一個相對單位,REM是相對單位,是相對HTML根元素。

這個單位可謂集相對大小和絕對大小的優點於一身,透過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層複合的連鎖反應。

目前,除了IE8及更早版本外,所有瀏覽器均已支援rem。

更多程式相關知識,請造訪:程式設計教學! !

以上是css中px、em、rem的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn