PX
px像素(Pixel)。相對長度單位。像素px是相對於顯示器屏幕分辨率而言的。
PX特色
-
- IE沒法調整那些使用px做爲單位的字體大小
-
- 國外的大部分網站可以調整的緣由在於其使用了em或rem做爲字體單位;
-
- 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)
})
]
}