src/docs/width.mdx
import { ApiTable } from "@/components/api-table.tsx"; import { CustomizingYourSpacingScale, ResponsiveDesign, UsingACustomValue } from "@/components/content.tsx"; import { Example } from "@/components/example.tsx"; import { Figure } from "@/components/figure.tsx";
export const title = "width"; export const description = "Utilities for setting the width of an element.";
<ApiTable rows={[ ["w-<number>", "width: calc(var(--spacing) * <number>);"], ["w-<fraction>", "width: calc(<fraction> * 100%);"], ["w-3xs", "width: var(--container-3xs); /* 16rem (256px) /"], ["w-2xs", "width: var(--container-2xs); / 18rem (288px) /"], ["w-xs", "width: var(--container-xs); / 20rem (320px) /"], ["w-sm", "width: var(--container-sm); / 24rem (384px) /"], ["w-md", "width: var(--container-md); / 28rem (448px) /"], ["w-lg", "width: var(--container-lg); / 32rem (512px) /"], ["w-xl", "width: var(--container-xl); / 36rem (576px) /"], ["w-2xl", "width: var(--container-2xl); / 42rem (672px) /"], ["w-3xl", "width: var(--container-3xl); / 48rem (768px) /"], ["w-4xl", "width: var(--container-4xl); / 56rem (896px) /"], ["w-5xl", "width: var(--container-5xl); / 64rem (1024px) /"], ["w-6xl", "width: var(--container-6xl); / 72rem (1152px) /"], ["w-7xl", "width: var(--container-7xl); / 80rem (1280px) */"], ["w-auto", "width: auto;"], ["w-px", "width: 1px;"], ["w-full", "width: 100%;"], ["w-screen", "width: 100vw;"], ["w-dvw", "width: 100dvw;"], ["w-dvh", "width: 100dvh;"], ["w-lvw", "width: 100lvw;"], ["w-lvh", "width: 100lvh;"], ["w-svw", "width: 100svw;"], ["w-svh", "width: 100svh;"], ["w-min", "width: min-content;"], ["w-max", "width: max-content;"], ["w-fit", "width: fit-content;"], ["w-(<custom-property>)", "width: var(<custom-property>);"], ["w-[<value>]", "width: <value>;"], ["size-<number>", "width: calc(var(--spacing) * <number>);\nheight: calc(var(--spacing) * <number>);"], ["size-<fraction>", "width: calc(<fraction> * 100%);\nheight: calc(<fraction> * 100%);"], ["size-auto", "width: auto;\nheight: auto;"], ["size-px", "width: 1px;\nheight: 1px;"], ["size-full", "width: 100%;\nheight: 100%;"], ["size-dvw", "width: 100dvw;\nheight: 100dvw;"], ["size-dvh", "width: 100dvh;\nheight: 100dvh;"], ["size-lvw", "width: 100lvw;\nheight: 100lvw;"], ["size-lvh", "width: 100lvh;\nheight: 100lvh;"], ["size-svw", "width: 100svw;\nheight: 100svw;"], ["size-svh", "width: 100svh;\nheight: 100svh;"], ["size-min", "width: min-content;\nheight: min-content;"], ["size-max", "width: max-content;\nheight: max-content;"], ["size-fit", "width: fit-content;\nheight: fit-content;"], ["size-(<custom-property>)", "width: var(<custom-property>);\nheight: var(<custom-property>);"], ["size-[<value>]", "width: <value>;\nheight: <value>;"], ]} />
Use w-<number> utilities like w-24 and w-64 to set an element to a fixed width based on the spacing scale:
<!-- [!code classes:w-96,w-80,w-64,w-48,w-40,w-32,w-24] -->
<div class="w-96 ...">w-96</div>
<div class="w-80 ...">w-80</div>
<div class="w-64 ...">w-64</div>
<div class="w-48 ...">w-48</div>
<div class="w-40 ...">w-40</div>
<div class="w-32 ...">w-32</div>
<div class="w-24 ...">w-24</div>
Use w-full or w-<fraction> utilities like w-1/2 and w-2/5 to give an element a percentage-based width:
<!-- [!code classes:w-1/2,w-2/5,w-3/5,w-1/3,w-2/3,w-1/4,w-3/4,w-1/5,w-4/5,w-1/6,w-5/6,w-full] -->
<div class="flex ...">
<div class="w-1/2 ...">w-1/2</div>
<div class="w-1/2 ...">w-1/2</div>
</div>
<div class="flex ...">
<div class="w-2/5 ...">w-2/5</div>
<div class="w-3/5 ...">w-3/5</div>
</div>
<div class="flex ...">
<div class="w-1/3 ...">w-1/3</div>
<div class="w-2/3 ...">w-2/3</div>
</div>
<div class="flex ...">
<div class="w-1/4 ...">w-1/4</div>
<div class="w-3/4 ...">w-3/4</div>
</div>
<div class="flex ...">
<div class="w-1/5 ...">w-1/5</div>
<div class="w-4/5 ...">w-4/5</div>
</div>
<div class="flex ...">
<div class="w-1/6 ...">w-1/6</div>
<div class="w-5/6 ...">w-5/6</div>
</div>
<div class="w-full ...">w-full</div>
Use utilities like w-sm and w-xl to set an element to a fixed width based on the container scale:
<!-- [!code classes:w-xl,w-lg,w-md,w-sm,w-xs,w-2xs,w-3xs] -->
<div class="w-xl ...">w-xl</div>
<div class="w-lg ...">w-lg</div>
<div class="w-md ...">w-md</div>
<div class="w-sm ...">w-sm</div>
<div class="w-xs ...">w-xs</div>
<div class="w-2xs ...">w-2xs</div>
<div class="w-3xs ...">w-3xs</div>
Use the w-screen utility to make an element span the entire width of the viewport:
<!-- [!code classes:w-screen] -->
<div class="w-screen">
<!-- ... -->
</div>
Alternatively, you can match the width of the large, small or dynamic viewports using the w-lvw, w-svw, and w-dvw utilities.
Use the w-auto utility to remove an element's assigned width under a specific condition, like at a particular breakpoint:
<!-- [!code classes:w-full,w-auto] -->
<div class="w-full md:w-auto">
<!-- ... -->
</div>
Use utilities like size-px, size-4, and size-full to set both the width and height of an element at the same time:
<!-- [!code classes:size-16,size-20,size-24,size-32,size-40] -->
<div class="size-16 ...">size-16</div>
<div class="size-20 ...">size-20</div>
<div class="size-24 ...">size-24</div>
<div class="size-32 ...">size-32</div>
<div class="size-40 ...">size-40</div>
<CustomizingYourSpacingScale utilities={["w", "size"]} />