Aller au contenu

Box sizing

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"; import { Stripes } from "@/components/stripes.tsx";

export const title = "box-sizing"; export const description = "Utilities for controlling how the browser should calculate an element's total size.";

Examples

Including borders and padding

Use the box-border utility to set an element's box-sizing to border-box, telling the browser to include the element's borders and padding when you give it a height or width.

This means a 100px × 100px element with a 2px border and 4px of padding on all sides will be rendered as 100px × 100px, with an internal content area of 88px × 88px:

{
{/* w-measure indicator */}
{/* Horizontal line */}
{/* Left chip */}
{/* Badge */}
128px
{/* Right chip */}
{/* h-measure indicator */}
{/* Vertical line */}
{/* Top chip */}
{/* Badge */}
128px
{/* Bottom chip */}
}
<!-- [!code classes:box-border] -->
<div class="box-border size-32 border-4 p-4 ...">
  <!-- ... -->
</div>

Tailwind makes this the default for all elements in our preflight base styles.

Excluding borders and padding

Use the box-content utility to set an element's box-sizing to content-box, telling the browser to add borders and padding on top of the element's specified width or height.

This means a 100px × 100px element with a 2px border and 4px of padding on all sides will actually be rendered as 112px × 112px, with an internal content area of 100px × 100px:

{
{/* w-measure indicator */}
{/* Horizontal line */}
{/* Left chip */}
{/* Badge */}
128px
{/* Right chip */}
{/* h-measure indicator */}
{/* Vertical line */}
{/* Top chip */}
{/* Badge */}
128px
{/* Bottom chip */}
}
<!-- [!code classes:box-content] -->
<div class="box-content size-32 border-4 p-4 ...">
  <!-- ... -->
</div>

Responsive design