justify-items

Definition

The justify-items CSS property is used in grid layouts to align grid items along the horizontal axis within their respective grid cells. It sets the alignment of items within the grid cells in the grid container.

The justify-items property accepts various values to control the horizontal alignment of grid items:

  • start: Grid items are aligned to the start of the grid cell.
  • end: Grid items are aligned to the end of the grid cell.
  • center: Grid items are centered horizontally within the grid cell.
  • stretch: Grid items are stretched to fill the entire width of the grid cell.
  • baseline: Grid items are aligned based on their baseline.

Here’s an example:

.grid-container {
  display: grid;
  justify-items: center;
}

In this example, the .grid-container class is a grid container, and the justify-items: center; rule centers the grid items horizontally within their respective grid cells.

You can use other values like start, end, stretch, or baseline to achieve different horizontal alignments based on your layout requirements.

The justify-items property is useful in grid layouts to control the horizontal alignment of grid items within their grid cells, providing flexibility in the positioning and layout of the grid structure.

Syntax

.layout {
  display: grid;
  grid-auto-rows: minmax(0, 1fr);
  justify-items: center;
}

justify-items works across flexbox and grid layouts to position tracks or individual items along the main or cross axis.

Values

  • start / end: align content to the logical start or end edge (writing-mode aware).
  • center: center items or tracks along the axis.
  • stretch: expand items to fill the available space when allowed.
  • baseline: line up first baselines for tidy typography.
  • safe / unsafe: let the browser avoid or allow overflow when centering could clip content.

Practical Examples

.pricing {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  justify-items: center;
  gap: 2rem;
}

Center-aligned tracks keep pricing cards balanced across breakpoints.

HTML

Default alignment

A B C

With justify-items: center

A B C
Code
<div class="grid gap-4 sm:grid-cols-2">
  <div class="space-y-3 rounded-lg border border-slate-200 bg-white p-4 shadow-sm">
    <p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Default alignment</p>
    <div class="grid h-48 gap-3 rounded-md border border-dashed border-slate-300 bg-slate-50 p-3" style="display: grid; grid-auto-rows: minmax(0, 1fr);">
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-900 text-white">A</span>
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-200 text-slate-700">B</span>
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-200 text-slate-700">C</span>
    </div>
  </div>
  <div class="space-y-3 rounded-lg border border-slate-200 bg-white p-4 shadow-sm">
    <p class="text-xs font-semibold uppercase tracking-wide text-slate-500">With justify-items: center</p>
    <div class="grid h-48 gap-3 rounded-md border border-dashed border-slate-300 bg-slate-50 p-3" style="display: grid; grid-auto-rows: minmax(0, 1fr); justify-items: center;">
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-900 text-white">A</span>
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-200 text-slate-700">B</span>
      <span class="flex h-12 w-12 items-center justify-center rounded-full bg-slate-200 text-slate-700">C</span>
    </div>
  </div>
</div>

Tips & Best Practices

  • Align on the container first, then reach for *-self overrides only when a child needs unique treatment.
  • Prefer logical keywords (start, end) over physical directions for better localisation.
  • Combine alignment with gap to manage spacing without extra wrapper elements.

Accessibility & UX Notes

Predictable alignment lowers cognitive load and lets keyboard users tab through content without unexpected jumps. Maintain visible focus indicators and ensure stretched components still provide generous hit areas.

Browser Support

align-* and justify-* properties are well supported. place-* shorthands require Chrome 59+, Edge 79+, Firefox 66+, Safari 12.1+.

  • gap for consistent spacing between tracks or items.
  • justify-content, align-items, and place-content to coordinate both layout axes.
  • flex-direction and grid-auto-flow influence which axis is treated as main vs. cross.

Related posts