| Media | Recommended | Occasional use | Infrequent use | Not recommended |
|---|---|---|---|---|
| Screen | em, rem, % | px | ch, ex, vw, vh, vmin, vmax | cm, mm, in, pt, pc |
| em, rem, % | cm, mm, in, pt, pc | ch, ex | px, vw, vh, vmin, vmax |
Absolute units should rarely be used, since their calculated values don't adjust to their contexts.
| Unit | Description |
|---|---|
| px | pixel (a dot on the computer screen) |
| Unit | Description |
|---|---|
| % | percentage |
| em | relative to font size of the element |
| rem | relative to font size of the root element |
| ch | relative to width of the "0" (ZERO, U+0030) glyph in the element's font |
| ex | relative to x-height of the font |
The following physical units should only be used for print style sheets, never for the screen.
| Unit | Description |
|---|---|
| cm | centimeter |
| mm | millimeter |
| in | inch (1in equals 2.54cm, 72pt, and 6pc) |
| pt | point (1pt equals 1/72in and 1/12pc) |
| pc | pica (1pc equals 12pt and 1/6in) |
Viewport-percentage length units should be used with caution, as there is still some lingering bugs with their implementation.
| Unit | Description |
|---|---|
| vw | relative to 1% of viewport's width |
| vh | relative to 1% of viewport's height |
| vmin | relative to 1% of viewport's smaller dimension |
| vmax | relative to 1% of viewport's larger dimension |
In order to make relative units (e.g. em and rem) based on a 10px scale,
rather than a 16px scale (ord)
html {
font-size: 62.5%;
}Most likely use px, as most of the time, the border shouldn't need to scale.
.Component {
border-bottom: 1px solid #ccc;
}Font-size should only be applied at the lowest possible child elements, in order to minimize its cascading impact on relative units.
DO:
.Component {
}
.Component-heading {
font-size: 1.2em;
}
.Component-body {
font-size: 0.9em;
}DO NOT:
.Component {
font-size: 1.2em;
}
.Component-heading {
font-size: 1em;
}
.Component-body {
font-size: 0.75em;
}In the document root,
In order to ensure consistent use of whitespace throughout the application,
its best to use rem.
.Component {
margin: 1rem 0;
padding: 1rem;
}
Great overview/reference!