Typography

Stacks provides atomic classes to override default styling of typography. Change typographic weights, styles, and alignment with these atomic styles.

Basic

These styles should only be used as overrides. They shouldn’t replace standard semantic uses of strong or em tags.

Basic classes

ClassOutputDefinition
.fw-normalfont-weight: 400;Normal font weight. Maps to 400.
.fw-mediumfont-weight: 500;Medium font weight. Maps to 500.
.fw-boldfont-weight: 600;Bold font weight. Maps to 600.
.fs-normalfont-style: normal;Selects the normal font within the font-family.
.fs-italicfont-style: italic;Selects the italic font within the font-family.
.tt-capitalizetext-transform: capitalize;The first character in each word is capitalized regardless of markup.
.tt-lowercasetext-transform: lowercase;All characters are lowercase regardless of markup.
.tt-uppercasetext-transform: uppercase;All characters are uppercase regardless of markup.
.tt-nonetext-transform: none;Characters in a string remain unchanged.
.tt-unsettext-transform: unset;Text-transform is unset entirely.
.td-underlinetext-decoration: underline;Text renders with an underline.
.td-nonetext-decoration: none;Text renders without an underline.

Basic examples

<p class="fw-normal"></p>
<p class="fw-bold"></p>

<p class="fs-normal"></p>
<p class="fs-italic"></p>
<p class="fs-unset"></p>

<p class="tt-capitalize"></p>
<p class="tt-lowercase"></p>
<p class="tt-uppercase"></p>
<p class="tt-none"></p>
<p class="tt-unset"></p>

<a class="td-underline"></a>
<a class="td-none"></a>
Font Weight: Normal
Font Weight: Bold
Font Style: Normal
Font Style: Italic
Font Style: Unset
Text Transform: Capitalize
Text Transform: Lowercase
Text Transform: Uppercase
Text Transform: None
Text Transform: Unset
Text Decoration: Underline
Text Decoration: None

Layout

Layout classes

ClassOutputDefinitionResponsive?
.ta-lefttext-align: left;Inline contents are aligned to the left edge.Yes
.ta-centertext-align: center;Inline contents are aligned to the center.Yes
.ta-righttext-align: right;Inline contents are aligned to the right edge.Yes
.ta-justifytext-align: justify;Inline contents are justified. Text should be spaced to line up its left and right edges to the left and right edges, except for the last line.
.ws-normalwhite-space: normal;Lines are broken as necessary to fill the parent.
.ws-nowrapwhite-space: nowrap;Text wrapping is disabled.
.ws-prewhite-space: pre;Whitespace is preserved but text won't wrap.
.ws-pre-wrapwhite-space: pre-wrap;Whitespace is preserved but text will wrap. New lines are preserved.
.ws-pre-linewhite-space: pre-line;Whitespace is preserved but text will wrap. New lines are collapsed.
.ow-normalword-break: normal;Restores overflow wrapping behavior.
.ow-anywhereoverflow-wrap: anywhere;Breaks a string of characters at any point when no other acceptable break points are available and does not hyphenate the break.
.ow-break-wordoverflow-wrap: break-word;Breaks a word to a new line only if the entire word cannot be placed on its own line without overflowing.
.ow-inheritoverflow-wrap: inherit;Inherits the parent value.
.ow-intialoverflow-wrap: intial;Restores the value to the initial value set on the body.
.ow-unsetoverflow-wrap: unset;Unsets any inherited behavior. Does not work in IE.
.break-wordword-break: break-word; overflow-wrap: break-word; hyphens: auto;A utility class combining all word-break strategies when you absolutely must break a word.
.wb-normalword-break: normal;Restores word break behavior.
.wb-break-allword-break: break-all;To prevent copy from overflowing its box, breaks should occur between any two characters (excluding Chinese, Japanese, and Korean text)
.wb-keep-allword-break: keep-all;Removes word breaks for Chinese, Japanese, and Korean text. All other text behavior is the same as normal.
.wb-inheritword-break: inherit;Inherits the parent value.
.wb-intialword-break: intial;Restores the value to the initial value set on the body.
.wb-unsetword-break: unset;Unsets any inherited behavior.

Layout examples

<p class="ta-left">Text align: Left</p>
<p class="ta-center">Text align: Center</p>
<p class="ta-right">Text align: Right</p>
<p class="ta-justify">Justify: …</p>
<p class="ta-unset">Text align: Unset</p>

<p class="ws-normal">White-space: Normal</p>
<p class="ws-nowrap">White-space: Nowrap</p>
<p class="ws-pre">White-space: Pre</p>
<p class="ws-pre-wrap">White-space: Pre-wrap</p>
<p class="ws-pre-line">White-space: Pre-line</p>
<p class="ws-unset">White-space: Unset</p>

<p class="break-word">Break word</p>

<p class="truncate">Truncate: …</p>

Text Align: Left

Text Align: Center

Text Align: Right

Text Align: Justify — Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Text Align: Unset

White-space: Normal

White-space: Nowrap

White-space: Pre

White-space: Pre-wrap

White-space: Pre-line

White-space: Unset

Break word: MethionylglutaminylarginylhionylglutaminylargintyrosylglutamylmethionylglutaminylarginyltyrlarginyltyrosylglutamylMethionylglutaminylarginyltyrosylglutamylnyltyrosylserinemethionylglutaminylargiglutamylmethionyosylglutamylmethionylglutaminylglutaminylarginyltyrosylglutamylmethionylglutaminylarginyltyrosylglutamylmetyltyrosylglutamylserine

Fonts

<p class="ff-sans"></p>
<p class="ff-serif"></p>
<p class="ff-mono"></p>
<p class="ff-inherit"></p>

Sans Serif

-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"

Serif

Georgia, Cambria, "Times New Roman", Times, serif

Monospace

"SF Mono", SFMono-Regular, ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace

Sizes

Fonts larger than .fs-body1 are reduced in size at the smallest responsive breakpoint. .fs-body1 or smaller remain fixed at their initial pixel values.

Size classes

ClassSizeLine HeightResponsive Size
.fs-fine12px1.3612px
.fs-caption13px1.4013px
.fs-body114px1.4014px
.fs-body216px1.4015px
.fs-body318px1.4016px
.fs-subheading20px1.4018px
.fs-title22px1.4020px
.fs-headline128px1.4023px
.fs-headline236px1.4026px
.fs-display146px1.3429px
.fs-display258px1.2834px
.fs-display372px1.2037px
.fs-display4100px1.1843px

Size examples

<p class="fs-fine"></p>
<p class="fs-caption"></p>
<p class="fs-body1"></p>
<p class="fs-body2"></p>
<p class="fs-body3"></p>
<p class="fs-subheading"></p>
<p class="fs-title"></p>
<p class="fs-headline1"></p>
<p class="fs-headline2"></p>
<p class="fs-display1"></p>
<p class="fs-display2"></p>
<p class="fs-display3"></p>
<p class="fs-display4"></p>
Fine
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Caption
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Body 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Body 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Body 3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Subheading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Headline 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Headline 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Display 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Display 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Display 3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Display 4
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line height

<p class="lh-xs"></p>
<p class="lh-sm"></p>
<p class="lh-md"></p>
<p class="lh-lg"></p>
<p class="lh-xl"></p>
<p class="lh-xxl"></p>
<p class="lh-unset"></p>

Line Height XS: This sets the line-height value to 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height SM: This sets the line-height value to 1.15. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height MD: This sets the line-height value to 1.3. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height LG: This sets the line-height value to 1.6. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height XL: This sets the line-height value to 1.92. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height XXL: This sets the line-height value to 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Line Height Unset: This sets the line-height value to initial. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Hyphenation

Our hyphenation classes determine when text that wraps across multiple lines is hyphenated. You can prevent hyphenation entirely, or allow the browser to automatically hypenate.

<p class="hyphens-none"></p>
<p class="hyphens-auto"></p>
This text will not be hyphenated when large words break—longer words are broken by .ow-break-word.
This text will be hyphenated when large words break. .ow-break-word shouldn't be necessary since breaks are implied by hyphenation rules.