一文搞懂CSS中的字體單位大小(px,em,rem...)

前言

在學(xué)習(xí)的過程中,發(fā)現(xiàn)CSS有很多可以描述單位的尺寸。比如px,em,rem,vw等等。平時(shí)也沒有深究,一來是沒時(shí)間,二來是在我學(xué)習(xí)清單中優(yōu)先級過低。一直想徹底弄明白,一直耽擱到現(xiàn)在。現(xiàn)在花上一點(diǎn)時(shí)間來整理一下,徹底弄懂它。

CSS長度單位

  • 絕對長度單位。
    絕對長度單位表示為一個(gè)固定的值,不會改變。不利于頁面渲染。
    • in,英寸
    • cm, 里面
    • mm, 毫米
    • pt
    • pc
  • 相對長度單位。
    其長度單位會隨著它的參考值的變化而變化。
    • px,像素
    • em,元素的字體高度
    • %,百分比
    • rem,根元素的font-size
    • vm,視窗寬度,1vw=視窗寬度的1%
    • vh,視窗高度,1vh=視窗高度的1%

物理像素(設(shè)備像素)

比如有一個(gè)圖片,細(xì)分,最小單位就是像素。也就是說,圖片由許多的像素構(gòu)成。像素是小方塊,這些小方塊都有一個(gè)明確的位置和被分配的色彩數(shù)值,小方格顏色和位置就決定該圖像所呈現(xiàn)出來的樣子。

image

一個(gè)設(shè)備生產(chǎn)出來,它們的像素就已經(jīng)確定了。iPhone5的分辨率是640x1136px,代表屏幕由640行,1136列像素小方塊組成。

為了理解像素和避免與CSS像素混淆,
可以將物理像素當(dāng)做物理小方塊。
比如iPhone5的像素是640X1136px,可以當(dāng)做640*1136個(gè)小方塊。

分辨率

也叫做解析度,解像度??梢詮娘@示分辨率與圖像分辨率兩個(gè)方向來分類。

  • 屏幕分辨率。是屏幕圖像的精密度,是指顯示器所能顯示的像素有多少,即顯示器可以可以顯示的小方塊有多少個(gè)。
    • 顯示器的可顯示的小方塊越多,畫面就越精細(xì),同樣的屏幕區(qū)域內(nèi)能顯示的信息也越多
    • 可以把整個(gè)圖像想象成是一個(gè)大型的棋盤,而分辨率的表示方式就是所有經(jīng)線和緯線交叉點(diǎn)的數(shù)目。棋盤的小方塊越多,可以放的棋子就越多。
    • 顯示分辨率一定的情況下,顯示屏越小圖像越清晰,反之,顯示屏大小固定時(shí),顯示分辨率越高圖像越清晰。(小方塊一樣多的情況下,顯示屏越小越清晰;屏幕大小一樣大的時(shí)候,小方塊越多圖形越清晰)

CSS像素px

CSS像素的單位也叫做px。它是圖像顯示的基本單元,既不是一個(gè)確定的物理量,也不是一個(gè)點(diǎn)或者小方塊,而是一個(gè)抽象概念。所以在談?wù)撓袼貢r(shí)一定要清楚它的上下文!

  • 為了保證閱讀體驗(yàn)一致,CSS可以自動在不同設(shè)備之間可以調(diào)節(jié)。即一份代碼可以在不同的大小的設(shè)備之間顯示,并且可以保證閱讀體驗(yàn)一致。
  • 默認(rèn)情況下一個(gè)CSS像素應(yīng)該是等于一個(gè)物理像素的寬度。
  • 但是在高PPI的設(shè)備上,CSS像素甚至在默認(rèn)狀態(tài)下就相當(dāng)于多個(gè)物理像素的尺寸。比如iPhone的屏幕對比一般的手機(jī)屏幕會看起來更精細(xì)清晰一些。
  • 在瀏覽器上通過ctrl +/-可以擴(kuò)大縮小屏幕,其實(shí)就是屏幕分辯率的調(diào)低/調(diào)高。ctrl +屏幕放大,分辨率降低。
  • iPhone6,7,8都是兩倍屏手機(jī),即一個(gè)CSS像素等于2物理像素。iPhone6Plus等是三倍屏手機(jī),一個(gè)CSS像素等于3物理像素。
  • 以iPhone6為例,設(shè)計(jì)稿給出一個(gè)圖片寬高為40*40。在實(shí)際開發(fā)中要除以2,寬高要寫成20x20。因?yàn)閕Phone6是兩倍屏手機(jī)。

em

em是相對長度單位。相對于當(dāng)前對象內(nèi)文本的字體尺寸。如當(dāng)前對行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對于瀏覽器的默認(rèn)字體尺寸,瀏覽器字體默認(rèn)為16px。

  • 所以,1em = 16px。默認(rèn)情況下。

如何高效使用em呢

  • body里聲明font-size:62.5%。即全局聲明1em = 16px * 62.5% = 10px
  • 之后可以把em當(dāng)做px使用。當(dāng)然此時(shí),1em = 10px
  • 如果在父容器里說明了font-size:20px,那么在子容器里的1em就等于20px。

rem

rem單位是相對于字體大小的html元素,也稱為根元素。

html {
  font-size: 10px; /* 不建議設(shè)置 font-size: 62.5%; 在 IE 9-11 上有偏差,具體表現(xiàn)為 1rem = 9.93px。 */
}

.sqaure {
  width: 5rem;  /* 50px */
  height: 5rem; /* 50px */
}

em與rem

  • rem是相對于根元素(html)的字體大小,而em是相對于其父元素的字體大小。
  • em最多取到小數(shù)點(diǎn)的后三位
<style>
  html{ font-size: 20px; }
  body{ 
    font-size: 1.4rem;  /* 1rem = 28px */
    padding: 0.7rem;  /* 0.7rem = 14px */
  } 
  div{
    padding: 1em;  /* 1em = 28px */
  }
  span{
    font-size:1rem;  /* 1rem = 20px */
    padding: 0.9em;  /* 1em = 18px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>

上面的例子中,發(fā)現(xiàn)了一個(gè)有意思的情況。em 會層層繼承父元素的字體大小,很容易造成字體大小的混亂。所以以后用rem會更好。

rpx

rpx 是微信小程序解決自適應(yīng)屏幕尺寸的尺寸單位。微信小程序規(guī)定屏幕的寬度為750rpx。

無論是在iPhone6上面還是其他機(jī)型上面都是750rpx的屏幕寬度,拿iPhone6來講,屏幕寬度為375px,把它分為750rpx后, 1rpx = 0.5px = 1物理像素。

image

vw 和 vh

  • vw,視窗寬度,1vw=視窗寬度的1%
  • vh,視窗高度,1vh=視窗高度的1%
  • 如果瀏覽器的高是900px,1vh求得的值為9px。同理,如果顯示窗口寬度為750px,1vw求得的值為7.5px。

vmin 和 vmax

  • vmin和vmax是相對于視口的高度和寬度兩者之間的最小值或最大值。
  • 瀏覽器的高為1100px、寬為700px,那么1vmin就是7px,1vmax就是11px
  • 瀏覽器的高為800px,寬為1080px,那么1vmin也是8px,1vmax也是10.8px
  • vmin取寬度高度兩者更小者/100
  • vmax取寬度高度兩者更大者/100

哪些地方可以用到

  • 一個(gè)總是在屏幕上可見的元素。使用高度和寬度設(shè)置為低于100的vmin值將可以實(shí)現(xiàn)這個(gè)效果。
  • 一個(gè)總是覆蓋可視窗口的正方形(一直接觸屏幕的四條邊)
.box {
    height: 100vmax;
    width: 100vmax;
}

參考文章

前端開發(fā)中像素的概念

最全的CSS尺寸單位介紹

CSS3中常見的單位
移動設(shè)備分辨率(終于弄懂了為什么移動端設(shè)計(jì)稿總是640px和750px)

幾個(gè)CSS的單位你需要了解一下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,095評論 1 92
  • ·##概念介紹:1.px(pixel,像素):是一個(gè)虛擬長度單位,是計(jì)算機(jī)系統(tǒng)的數(shù)字化長度單位,如果px要換算成物...
    小時(shí)候很帥的龍少閱讀 2,198評論 0 6
  • 論CSS常用單位的前世今生 目錄: 一、---------------------------淺析CSS的組成 二...
    Marting424閱讀 2,977評論 0 3
  • 概念介紹: 1、px (pixel,像素): 是一個(gè)虛擬長度單位,是計(jì)算機(jī)系統(tǒng)的數(shù)字化圖像長度單位,如果px要換算...
    _雙眸閱讀 631評論 0 0
  • 大家好,我是IT修真院武漢分院第10期學(xué)員余佳貝,一枚正直善良的web程序員。 今天給大家分享一下,修真院官網(wǎng)cs...
    寡人yu閱讀 3,497評論 0 1

友情鏈接更多精彩內(nèi)容