Skip to content

Latest commit

 

History

History
96 lines (59 loc) · 4.1 KB

03.md

File metadata and controls

96 lines (59 loc) · 4.1 KB

徹底理解 UI 及 Web 的尺寸單位:基本觀念


前言:

  • pt在iOS, CSS, Android上都有,但意義卻不盡相同。
  • px在iOS, CSS, Android上也都有,意義也相同。
  • 但若只用px打天下,則會發生在不同大小手機螢幕上會有不同的結果。

解析度、像素密度

在 UI 設計中,我們可以理解成「顯示器呈現影像細節的能力」。也就是說,成像單位越細小、越密集的螢幕,解析度就越高。 大多數螢幕的成像單位是像素(Pixel),因此描述密度/解析度的方法就是抓一段固定長度(通常是英吋),看看裡面塞進了幾顆像素點,固定長度能塞越多顆,就代表這個螢幕的點越細。

假設,蘋果出了螢幕長寬都只有一英吋,畫面大小是 10x10 pixel,名稱叫做「iPhone Inch」:

iPhone Inch

如果要描述此螢幕有多精細,可以說成:

  • 螢幕的像素密度是每英吋 10 pixel」
  • 「iPhone Inch 的解析度是 10 ppi」(Pixels Per Inch,每英吋塞進了幾顆像素點(像素密度))

假設,蘋果又出了螢幕長寬都只有一英吋,畫面大小是 20x20 pixel,名稱叫做「iPhone Inchs」:

iPhone Inchs

如果要描述此螢幕有多精細,可以說成:

  • 螢幕的像素密度是每英吋 20 pixel」
  • 「iPhone Inchs 的解析度是 20 ppi」

再舉一個例子,iPhone 7的螢幕寬度是 2.3 吋,橫向總共排列了 750 顆 pixel

  • 每英吋塞進了 750/2.3 ≈ 326 顆 pixel
  • iPhone 7 的解析度是 326 ppi

所以就可以整理出一個式子:

解析度關係式


iOS 的 pt 單位

如果在 iPhone Inch 與 iPhone Inchs 上各畫上一條 1 px 黑線,則如下圖:

此兩種解析度的螢幕發生不同粗細的線條。

當一個螢幕解析度(像素密度)越高的時候,像素點就會越密集、越小顆,因此我們使用 px 當單位來做 UI 的話,就會發生不同解析度的螢幕呈現不同的狀況。

如何解決呢?就有了 pt 的概念產生了:

以銀色機子的「1 顆 px」為基準,這顆紅點的大小,就當成新的標準尺寸單位,你就叫它「1 pt (point, 點)」,這個點點不管搬到哪裡就是那麼大,我現在把它搬到金色的機子上,也是維持同樣大小。

  • 銀色機器上的 1 px 等於 1 pt。
  • 金色機器上的 2 px 等於 1 pt。

pt (point) 的誕生,就是為了解決不同的螢幕上,px 大小會變來變去的問題

所以,在初代iPhone上標出一顆紅色的 pixel,然後說它的長度(或寬度)叫做「1 pt」。

  • 在視網膜螢幕、密度兩倍的 iPhone 4 上,它的長度就會涵蓋了螢幕上的 2px。
  • 在三倍的iPhone 6 plus 上,它的長度就會涵蓋了螢幕上的 3px。

Android 的 dp 單位

Android手機的螢幕解析度非常多種,所以Google就制定了一套規定來規範螢幕解析度:

例如:

  • 螢幕解析度約160DPI,就稱之為MDPI。
  • 螢幕解析度約320DPI,就稱之為XHDPI。

註:Android 用的單位叫 dpi,但為了溝通方便,我們都還是用 ppi

把 MDPI 的螢幕定為基準點,它是一倍像素密度(上頭寫的 1x),我們在這顆螢幕上挑一顆 pixel,把它弄成紅色,接著把這個小紅點移到 XHDPI 的 2x 螢幕上的時候,它就會變成涵蓋 2px 了。

此單位名稱為 dp (Density-Independent Pixels) 等效於 iOS 的 pt

網頁設計裡的 pt 單位

CSS 的 pt 單位和我們前面所提的 iOS pt 其實是沒有關係的,其運作方式也不相同,所以無法一起使用。

pt 這個單位詞,其實最早源自於傳統的鉛字印刷,是用來表示鉛字塊的尺寸,在印刷和平面設計的世界裡,1 pt = 1/72 英吋;而 CSS 之所以有 pt 這個單位,其實是要把網頁印刷/列印出來的時候用到的。


Reference

  1. https://medium.com/uxabc/understanding-ui-units-8acdc0575388
tags: Web CSS