src/docs/text-wrap.mdx
import { ApiTable } from "@/components/api-table.tsx"; import { Example } from "@/components/example.tsx"; import { Figure } from "@/components/figure.tsx"; import { ResponsiveDesign } from "@/components/content.tsx";
export const title = "text-wrap"; export const description = "Utilities for controlling how text wraps within an element.";
<ApiTable rows={[ ["text-wrap", "text-wrap: wrap;"], ["text-nowrap", "text-wrap: nowrap;"], ["text-balance", "text-wrap: balance;"], ["text-pretty", "text-wrap: pretty;"], ]} />
Use the text-wrap utility to wrap overflowing text onto multiple lines at logical points in the text:
<!-- [!code classes:text-wrap] -->
<article class="text-wrap">
<h3>Beloved Manhattan soup stand closes</h3>
<p>New Yorkers are facing the winter chill...</p>
</article>
Use the text-nowrap utility to prevent text from wrapping, allowing it to overflow if necessary:
<!-- [!code classes:text-nowrap] -->
<article class="text-nowrap">
<h3>Beloved Manhattan soup stand closes</h3>
<p>New Yorkers are facing the winter chill...</p>
</article>
Use the text-balance utility to distribute the text evenly across each line:
<!-- [!code classes:text-balance] -->
<article>
<h3 class="text-balance">Beloved Manhattan soup stand closes</h3>
<p>New Yorkers are facing the winter chill...</p>
</article>
For performance reasons browsers limit text balancing to blocks that are ~6 lines or less, making it best suited for headings.
Use the text-pretty utility to prefer better text wrapping and layout at the expense of speed. Behavior varies across browsers but often involves approaches like preventing orphans (a single word on its own line) at the end of a text block:
<!-- [!code classes:text-pretty] -->
<article>
<h3 class="text-pretty">Beloved Manhattan soup stand closes</h3>
<p>New Yorkers are facing the winter chill...</p>
</article>