afv-library/skills/design-systems-slds-apply/references/utilities/sizing.md

190 lines
5.7 KiB
Markdown

---
id: slds.guidance.utilities.sizing
title: Sizing Utilities
description: SLDS width sizing utility classes for responsive layouts
summary: "Utilities for width sizing. Fractional widths (1-of-2 through 1-of-12), absolute sizes, responsive breakpoints, and flex ordering."
artifact_type: reference
domain: utilities
topic: sizing
content_format: structured
complexity: intermediate
audience: [implementer]
tasks: [implement]
refs:
- slds.guidance.utilities
- slds.guidance.overview.utilities
- slds.guidance.utilities.grid
tags: [utilities, sizing, width, responsive, fractional]
keywords: [slds-size, slds-order, fractional width, responsive sizing]
---
# Sizing - Width Control
Width sizing and flex ordering.
## Core Classes
### Fractional Widths
Based on 12-column grid system with denominators of 2, 3, 4, 5, 6, 7, 8, and 12.
| Class | Purpose |
|-------|---------|
| `slds-size_1-of-2` | Sets width to 50% |
| `slds-size_1-of-3` | Sets width to 33.333% |
| `slds-size_2-of-3` | Sets width to 66.6667% |
| `slds-size_1-of-4` | Sets width to 25% |
| `slds-size_3-of-4` | Sets width to 75% |
| `slds-size_1-of-5` | Sets width to 20% |
| `slds-size_2-of-5` | Sets width to 40% |
| `slds-size_3-of-5` | Sets width to 60% |
| `slds-size_4-of-5` | Sets width to 80% |
| `slds-size_1-of-6` | Sets width to 16.6667% |
| `slds-size_5-of-6` | Sets width to 83.3333% |
| `slds-size_1-of-7` | Sets width to 14.2857% |
| `slds-size_1-of-8` | Sets width to 12.5% |
| `slds-size_1-of-12` | Sets width to 8.3333% |
| `slds-size_5-of-12` | Sets width to 41.6667% |
| `slds-size_7-of-12` | Sets width to 58.3333% |
| `slds-size_11-of-12` | Sets width to 91.6667% |
### Absolute Sizes
Fixed widths in rem units.
| Class | Purpose |
|-------|---------|
| `slds-size_xxx-small` | Sets width to 3rem (48px) |
| `slds-size_xx-small` | Sets width to 6rem (96px) |
| `slds-size_x-small` | Sets width to 12rem (192px) |
| `slds-size_small` | Sets width to 15rem (240px) |
| `slds-size_medium` | Sets width to 20rem (320px) |
| `slds-size_large` | Sets width to 25rem (400px) |
| `slds-size_x-large` | Sets width to 40rem (640px) |
| `slds-size_xx-large` | Sets width to 60rem (960px) |
| `slds-size_full` | Sets width to 100% |
### Responsive Breakpoints
Breakpoint-specific sizing with mobile-first approach.
| Breakpoint | Viewport Width | Prefix |
|------------|---------------|--------|
| x-small | ≥ 320px (20em) | `slds-x-small-size_*` |
| small | ≥ 480px (30em) | `slds-small-size_*` |
| medium | ≥ 768px (48em) | `slds-medium-size_*` |
| large | ≥ 1024px (64em) | `slds-large-size_*` |
| x-large | ≥ 1280px (80em) | `slds-x-large-size_*` |
| max-small | < 480px (30em) | `slds-max-small-size_*` |
| max-medium | < 768px (48em) | `slds-max-medium-size_*` |
| max-large | < 1024px (64em) | `slds-max-large-size_*` |
### Flex Ordering
Controls visual order in flexbox layouts.
| Class | Purpose |
|-------|---------|
| `slds-order_1` | Sets flex order to 1 |
| `slds-order_2` | Sets flex order to 2 |
| `slds-order_3` | Sets flex order to 3 |
| `slds-order_4` | Sets flex order to 4 |
| `slds-order_5` | Sets flex order to 5 |
| `slds-order_6` through `slds-order_12` | Sets flex order 6-12 |
## Common Patterns
### Three-Column Layout
```html
<!-- Three equal columns -->
<div class="slds-grid slds-wrap">
<div class="slds-size_1-of-3">
<!-- Column 1: 33.333% width -->
</div>
<div class="slds-size_1-of-3">
<!-- Column 2: 33.333% width -->
</div>
<div class="slds-size_1-of-3">
<!-- Column 3: 33.333% width -->
</div>
</div>
```
### Responsive Grid
```html
<!-- Full width mobile, half tablet, quarter desktop -->
<div class="slds-grid slds-wrap">
<div class="slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-4">
<!-- Card adapts from 100% → 50% → 25% -->
</div>
<div class="slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-4">
<!-- Card adapts from 100% → 50% → 25% -->
</div>
</div>
```
### Sidebar Layout
```html
<!-- Fixed sidebar with flexible content -->
<div class="slds-grid">
<nav class="slds-size_medium">
<!-- Sidebar: 320px fixed width -->
</nav>
<main class="slds-col">
<!-- Content: Fills remaining space -->
</main>
</div>
```
### Reordered Content
```html
<!-- Visual order differs from DOM order -->
<div class="slds-grid">
<div class="slds-size_1-of-3 slds-order_3">
<!-- Appears third visually -->
</div>
<div class="slds-size_1-of-3 slds-order_1">
<!-- Appears first visually -->
</div>
<div class="slds-size_1-of-3 slds-order_2">
<!-- Appears second visually -->
</div>
</div>
```
### Form Layout
```html
<!-- Two-column form with responsive stacking -->
<div class="slds-form" role="form">
<div class="slds-grid slds-wrap slds-gutters">
<div class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2">
<!-- First Name field: Full width mobile, half desktop -->
</div>
<div class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2">
<!-- Last Name field: Full width mobile, half desktop -->
</div>
<div class="slds-col slds-size_1-of-1">
<!-- Email field: Always full width -->
</div>
</div>
</div>
```
## Best Practices
Use fractional widths for flexible grid layouts
Apply responsive classes for mobile-first design
Combine with `slds-grid` and `slds-wrap` for proper grid behavior
Use `slds-col` for flexible remaining space
Apply `slds-gutters` to parent grid for consistent spacing
Use semantic HTML elements with sizing utilities
Avoid mixing fractional and absolute sizes on siblings
Never use sizing utilities without proper grid container
Avoid using more than 12 total columns per row
Never rely solely on `slds-order_*` for accessibility - maintain logical DOM order