px, em, rem, vw之間的區別

PX

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

PX特色

    1. IE沒法調整那些使用px做爲單位的字體大小
    1. 國外的大部分網站可以調整的緣由在於其使用了em或rem做爲字體單位;
    1. Firefox可以調整px和em,rem,可是96%以上的中國網民使用IE瀏覽器(或內核)。能夠考慮不說

EM

em是相對長度單位。相對於當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸未被人爲設置,則相對於瀏覽器的默認字體尺寸。

EM特色

1. em的值並非固定的;
2. 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做爲單位就好了。

因此咱們在寫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。

REM

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

這個單位與em有什麼區別呢?區別在於使用rem爲元素設定字體大小時,仍然是相對大小,
但相對的只是HTML根元素。這個單位可謂集相對大小和絕對大小的優勢於一身,經過它既
能夠作到只修改根元素就成比例地調整全部字體大小,又能夠避免字體大小逐層複合的連鎖
反應。目前,除了IE8及更早版本外,全部瀏覽器均已支持rem。

vh、vw

vh、vw方案即將視覺視口寬度 window.innerWidth和視覺視口高度 window.innerHeight 等分爲 100 份。
vh和vw方案和rem相似也是至關麻煩須要作單位轉化,並且px轉換成vw不必定能徹底整除,所以有必定的像素差。
不過在工程化的今天,webpack解析css 的時候用postcss-loader 有個postcss-px-to-viewport能自動實現px到vw的轉化
{
    loader: 'postcss-loader',
    options: {
    	plugins: ()=>[
        	require('autoprefixer')({
        		browsers: ['last 5 versions']
        	}),
        	require('postcss-px-to-viewport')({
        		viewportWidth: 375, //視口寬度(數字)
        		viewportHeight: 1334, //視口高度(數字)
        		unitPrecision: 3, //設置的保留小數位數(數字)
        		viewportUnit: 'vw', //設置要轉換的單位(字符串)
        		selectorBlackList: ['.ignore', '.hairlines'], //不須要進行轉換的類名(數組)
                minPixelValue: 1, //設置要替換的最小像素值(數字)
                mediaQuery: false //容許在媒體查詢中轉換px(true/false)
        	})
    	]
}
相關文章
相關標籤/搜索