Typography
Utilities for controlling the content of the before and after pseudo-elements.
Use the content-*
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, <a class="text-blue-600 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.
Higher resolution means more than just a better-quality image. With a Retina 6K display, <a class="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.
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" class="before:content-[attr(before)]">
<!-- ... -->
</div>
Since whitespace denotes the end of a class in HTML, replace any spaces in an arbitrary value with an underscore:
<div class="before:content-['Hello_World']">
<!-- ... -->
</div>
If you need to include an actual underscore, you can do this by escaping it with a backslash:
<div class="before:content-['Hello\_World']">
<!-- ... -->
</div>
Tailwind lets you conditionally apply utility classes in different states using variant modifiers. For example, use hover:before:content-['Hovering']
to only apply the before:content-['Hovering']
utility on hover.
<div class="before:content-['Not_Hovering'] hover:before:content-['Hovering']">
<!-- ... -->
</div>
For a complete list of all available state modifiers, check out the Hover, Focus, & Other States documentation.
You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:before:content-['Desktop']
to apply the before:content-['Desktop']
utility at only medium screen sizes and above.
<div class="before:content-['Mobile'] md:before:content-['Desktop']">
<!-- ... -->
</div>
To learn more, check out the documentation on Responsive Design, Dark Mode and other media query modifiers.
By default, Tailwind only provides the content-none
utility. You can customize these values by editing theme.content
or theme.extend.content
in your tailwind.config.js
file.
module.exports = {
theme: {
extend: {
content: {
'link': 'url("/icons/link.svg")',
},
}
}
}
Learn more about customizing the default theme in the theme customization documentation.
If you need to use a one-off content
value that doesn’t make sense to include in your theme, use square brackets to generate a property on the fly using any arbitrary value.
<div class="before:content-['Hello_World']">
<!-- ... -->
</div>
Learn more about arbitrary value support in the arbitrary values documentation.