CSS:Units
lastmod 2023-07-17created 2022-08-122 edits
CSS has several different units for expressing a length.
Many CSS properties take "length" values, such as width, margin, padding, font-size, etc.
Absolute Lengths
The absolute length units are fixed and a length expressed in any of these will appear as exactly that size.
Absolute length units are not recommended for use on screen, because screen sizes vary so much. However, they can be used if the output medium is known, such as for print layout.
| Unit | Description |
| cm | centimeters |
| mm | millimeters |
| in | inches (1in = 96px = 2.54cm) |
| px[^0] | pixels (1px = 1/96th of 1in) |
| pt | points (1pt = 1/72 of 1in) |
| pc | picas (1pc = 12 pt) |
Relative Lengths
Relative length units specify a length relative to another length property. Relative length units scale better between different rendering medium.
| Unit | Description |
| em | Relative to the font-size of the element (2em means 2 times the size of the current font) |
| ex | Relative to the x-height of the current font (rarely used) |
| ch | Relative to the width of the "0" (zero) |
| rem | Relative to font-size of the root element |
| vw | Relative to 1% of the width of the viewport[^1] |
| vh | Relative to 1% of the height of the viewport[^2] |
| vmin | Relative to 1% of viewport's[^3] smaller dimension |
| vmax | Relative to 1% of viewport's[^4] larger dimension |
| % | Relative to the parent element |
| Tip |
| The em and rem units are practical in creating perfectly scalable layout! |
New CSS Viewport Units: svh, lvh, dvh
- New Viewport Units - Ahmad Shadeed
- Sizing based on viewport width/height is convenient, but vh is buggy on mobile
- Because the viewport size does not include the browser's address bar UI
- 'svh' Small Viewport: viewport height with the address bar UI not collapsed
- 'lvh' Large Viewport: viewport height with the address bar UI collapsed
- 'dvh' Dynamic Viewport: changes dynamically between svh / lvh
- But be careful, as there may be performance issues