Typography

Content

Utilities for controlling the content of the before and after pseudo-elements.

Basic usage

Setting a pseudo-element's content

Use the content-{value} utilities along with the before and after variant modifiers to set the contents of the ::before and ::after pseudo-elements.

Out of the box, content-none is the only available preconfigured content utility. And while you can add additional utilities by customizing your theme, it generally makes more sense to just use an arbitrary value.

Use the square bracket notation to define any arbitrary content value on the fly.

Higher resolution means more than just a better-quality image. With a Retina 6K display, Pro Display XDR gives you nearly 40 percent more screen real estate than a 5K display.

Higher resolution means more than just a better-quality image. With a Retina 6K
display,
<a
  className="text-blue-600 **after:content-['_↗']** ..."
  dark-className="text-sky-400 **after:content-['_↗']** ..."
  href="https://www.
apple.com/pro-display-xdr/"
  target="_blank"
  >Pro Display XDR</a
>
gives you nearly 40 percent more screen real estate than a 5K display.

Referencing an attribute value

These content utilities even support CSS features like the attr() function, which you can use to reference a value stored in an attribute:

<div before="Hello World" className="before:content-[attr(before)]">
  <!-- ... -->
</div>

Using spaces and underscores

Since whitespace denotes the end of a className in HTML, replace any spaces in an arbitrary value with an underscore:

<div className="before:content-['Hello_World']">
  <!-- ... -->
</div>

If you need to include an actual underscore, you can do this by escaping it with a backslash:

<div className="before:content-['Hello\_World']">
  <!-- ... -->
</div>