Skip to main content Skip to docs navigation

Line Heights

Chassis CSS assigns a distinct line height to every font size, set by designers in Chassis Tokens — never derived from a single ratio or an algorithm.

On this page

Most CSS frameworks assign one line height to all body text, another to headings, or scale the value algorithmically — either way, the values are out of the designer's hands. Chassis CSS does it differently. Every font size has its own line-height token, set by the designer in Chassis Tokens and pushed straight to CSS.

This matters for two reasons:

  1. Larger text needs tighter line spacing. A 1.5 ratio that reads well at 16px looks awkward at 32px; a 1.2 ratio that suits a 32-pixel heading turns small body text into a wall.
  2. Pixel alignment with Figma. Percentage-based or unitless line heights cause Figma layers to misalign and separators to land on sub-pixel boundaries, breaking the pixel-perfect match between design and code.

With per-size line-height tokens, designers control the exact value for each size, each font-family variant, and each platform — and the CSS reflects those decisions without any developer intervention.

The example below shows the token-driven heading next to a heading forced to the typical 1.5em ratio. Notice how the latter looks loose and breaks the visual rhythm:

This is a long heading text with a specific line-height value comes from design tokens.

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

This is a long heading text with a standard 1.5em line-height of most design systems.

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

Overriding with utilities

Token-driven line heights are the right default, but you can still override them on a per-element basis with the lh-* utilities:

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.

html
<p class="lh-1">The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.</p>
<p class="lh-small">The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.</p>
<p class="lh-base">The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.</p>
<p class="lh-large">The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element.</p>

See also

  • Typography — global settings, headings, body text, lists, and the full type scale.
  • Design Tokens — how typography tokens are defined and exposed.