Definition
align-items is used to set the alignment of direct children elements as a group. It can be applied to both flexbox and grid layouts.
In flexbox layouts, it determines the alignment of items on the cross axis.
In grid layouts, this property controls the alignment of items on the block axis within their designated grid area.
Syntax
.layout {
display: grid;
grid-auto-rows: minmax(0, 1fr);
align-items: center;
}
align-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));
align-items: center;
gap: 2rem;
}
Center-aligned tracks keep pricing cards balanced across breakpoints.
Default alignment
With align-items: center
<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 align-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); align-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
*-selfoverrides only when a child needs unique treatment. - Prefer logical keywords (
start,end) over physical directions for better localisation. - Combine alignment with
gapto 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+.
Related
-
gapfor consistent spacing between tracks or items. -
justify-content,align-items, andplace-contentto coordinate both layout axes. -
flex-directionandgrid-auto-flowinfluence which axis is treated as main vs. cross.