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

9.7 KiB

id title description summary artifact_type domain topic content_format complexity audience tasks refs tags keywords
slds.guidance.utilities.grid Grid Utilities SLDS flexbox grid system utilities Utilities for flexible, responsive layouts using CSS Flexbox. Includes grid containers, columns, gutters (2px-96px), alignment, and responsive breakpoints. reference utilities grid structured intermediate
implementer
implement
slds.guidance.utilities
slds.guidance.overview.utilities
slds.guidance.utilities.sizing
utilities
grid
flexbox
layout
responsive
slds-grid
slds-col
slds-wrap
slds-gutters
slds-container

Grid - Flexbox Layout System

Creating flexible, responsive layouts using CSS Flexbox.

Core Classes

Class Purpose
slds-grid Initialize flex container (display: flex)
slds-col Initialize flex item/column (flex: 1 1 auto)
slds-wrap Allow columns to wrap to new rows (flex-wrap: wrap)
slds-nowrap Keep columns on single line (flex-wrap: nowrap)

Grid Flow Modifiers

Class Purpose
slds-grid_vertical Stack columns vertically (flex-direction: column)
slds-grid_vertical-reverse Stack columns vertically in reverse order (flex-direction: column-reverse)
slds-grid_reverse Reverse horizontal flow (flex-direction: row-reverse)
slds-grid_frame Full-viewport grid (min-width: 100vw; min-height: 100vh)
slds-grid_overflow Create horizontal scrolling grid (flex-flow: row nowrap)

Gutters

Class Gutter Width Per Side
slds-gutters_xxx-small 2px total 1px
slds-gutters_xx-small 4px total 2px
slds-gutters_x-small 8px total 4px
slds-gutters_small 24px total 12px
slds-gutters 24px total (default) 12px
slds-gutters_medium 32px total 16px
slds-gutters_large 48px total 24px
slds-gutters_x-large 64px total 32px
slds-gutters_xx-large 96px total 48px

Gutter Variants

  • slds-gutters_direct - Apply gutters only to direct child columns (not nested grids)
  • slds-gutters_direct-xxx-small through slds-gutters_direct-xx-large - Direct gutters with size variants

Alignment

Horizontal Alignment (Main Axis)

Class Purpose
slds-grid_align-center Center columns horizontally (justify-content: center)
slds-grid_align-space Equal space around columns (justify-content: space-around)
slds-grid_align-spread Space columns from edges (justify-content: space-between)
slds-grid_align-end Right align columns (justify-content: flex-end)

Vertical Alignment (Cross Axis)

Class Purpose
slds-grid_vertical-align-start Align columns to top (align-items: flex-start)
slds-grid_vertical-align-center Vertically center columns (align-items: center)
slds-grid_vertical-align-end Align columns to bottom (align-items: flex-end)
slds-grid_vertical-stretch Stretch columns to fill height (align-items: stretch)

Individual Column Alignment

Class Purpose
slds-align-top Align individual column to top (align-self: flex-start)
slds-align-middle Align individual column to middle (align-self: center)
slds-align-bottom Align individual column to bottom (align-self: flex-end)

Column Flex Control

Class Purpose
slds-grow Allow column to grow (flex-grow: 1)
slds-grow-none Prevent column from growing (flex-grow: 0)
slds-shrink Allow column to shrink (flex-shrink: 1)
slds-shrink-none Prevent column from shrinking (flex-shrink: 0)
slds-no-flex Remove flexbox from column (flex: none)
slds-no-space Set column to min-width of 0
slds-has-flexi-truncate Enable truncation in flexible container (flex: 1 1 0%; min-width: 0)

Column Positioning

Class Purpose
slds-col_bump-top Push column to top using margin-block-start: auto
slds-col_bump-right Push column to right using margin-inline-end: auto
slds-col_bump-bottom Push column to bottom using margin-block-end: auto
slds-col_bump-left Push column to left using margin-inline-start: auto

Column Borders

Class Purpose
slds-col_rule-top Add 1px border to top side (large screens only)
slds-col_rule-right Add 1px border to right side (large screens only)
slds-col_rule-bottom Add 1px border to bottom side (large screens only)
slds-col_rule-left Add 1px border to left side (large screens only)

Container Sizing

Class Max Width Purpose
slds-container_small 480px Restrict width for small content
slds-container_medium 768px Restrict width for medium content
slds-container_large 1024px Restrict width for large content
slds-container_x-large 1280px Restrict width for extra large content
slds-container_fluid 100% Full viewport width

Container Positioning

Class Purpose
slds-container_center Center container horizontally
slds-container_left Left align container
slds-container_right Right align container

Pull Padded Utilities

Class Purpose
slds-grid_pull-padded Normalize 12px padding when nesting
slds-grid_pull-padded-xxx-small Normalize 2px padding
slds-grid_pull-padded-xx-small Normalize 4px padding
slds-grid_pull-padded-x-small Normalize 8px padding
slds-grid_pull-padded-small Normalize 12px padding
slds-grid_pull-padded-medium Normalize 16px padding
slds-grid_pull-padded-large Normalize 24px padding
slds-grid_pull-padded-x-large Normalize 32px padding
slds-grid_pull-padded-xx-large Normalize 48px padding

Common Patterns

Basic Three-Column Grid

<!-- Equal width columns with gutters -->
<div class="slds-grid slds-wrap slds-gutters">
  <div class="slds-col slds-size_1-of-3">
    Column 1 content
  </div>
  <div class="slds-col slds-size_1-of-3">
    Column 2 content
  </div>
  <div class="slds-col slds-size_1-of-3">
    Column 3 content
  </div>
</div>

Responsive Card Layout

<!-- Mobile: full width, Tablet: half width, Desktop: third width -->
<div class="slds-grid slds-wrap slds-gutters_small">
  <div class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-3">
    <article class="slds-card">Card 1</article>
  </div>
  <div class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-3">
    <article class="slds-card">Card 2</article>
  </div>
  <div class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-3">
    <article class="slds-card">Card 3</article>
  </div>
</div>

Centered Modal Dialog

<!-- Vertically and horizontally centered content -->
<div class="slds-grid slds-grid_align-center slds-grid_vertical-align-center slds-grid_frame">
  <div class="slds-col slds-container_small">
    <section class="slds-modal__container">
      Modal content here
    </section>
  </div>
</div>

Sidebar Layout with Auto-push

<!-- Sidebar with main content pushed to opposite side -->
<div class="slds-grid slds-gutters">
  <nav class="slds-col slds-size_3-of-12">
    Sidebar navigation
  </nav>
  <main class="slds-col slds-col_bump-left">
    <!-- bump-left creates margin-inline-start: auto -->
    Main content area
  </main>
</div>

Nested Grid with Direct Gutters

<!-- Parent grid with nested grid using direct gutters -->
<div class="slds-grid slds-wrap slds-gutters_direct-medium">
  <div class="slds-col slds-size_1-of-2">
    <div class="slds-grid slds-wrap slds-gutters_direct-small">
      <div class="slds-col slds-size_1-of-2">Nested 1</div>
      <div class="slds-col slds-size_1-of-2">Nested 2</div>
    </div>
  </div>
  <div class="slds-col slds-size_1-of-2">
    Parent column 2
  </div>
</div>

Best Practices

Use slds-wrap for responsive card layouts that need to stack on mobile Start mobile-first with slds-size_1-of-1 then add breakpoint-specific sizes Use slds-gutters_small (24px) for standard spacing between columns Apply slds-has-flexi-truncate when text needs to truncate within flexible columns Use slds-container_center with slds-container_large for centered page layouts Apply slds-grid_pull-padded when nesting grids to maintain visual alignment

Avoid nesting grids more than 2 levels deep Never use slds-col without a parent slds-grid Avoid mixing grid utilities with float-based layouts Never combine slds-grid_align-spread with slds-gutters (creates double spacing)

Deprecated Utilities

The following grid utilities are deprecated. Use the specified replacements.

Responsive Nowrap Classes

Deprecated Replacement
slds-nowrap_small Use responsive grid classes instead
slds-nowrap_medium Use responsive grid classes instead
slds-nowrap_large Use responsive grid classes instead

Column Padding Classes

Deprecated Replacement
slds-col_padded Use slds-p-horizontal_small
slds-col_padded-medium Use slds-p-horizontal_medium
slds-col_padded-large Use slds-p-horizontal_large
slds-col_padded-around Use slds-p-around_small
slds-col_padded-around-medium Use slds-p-around_medium
slds-col_padded-around-large Use slds-p-around_large

Note: Column sizing utilities (slds-size_*) are defined in the Sizing Utilities category, not grid utilities.