Aligning items on the cross axis helps you control how elements line up vertically or horizontally inside a container. It makes your layout look neat and balanced.
Align items (cross axis) in Tailwind
items-start items-center items-end items-baseline items-stretch
These classes control alignment on the cross axis in a flex container.
Cross axis means vertical if flex direction is row, horizontal if flex direction is column.
<div class="flex items-start"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>
<div class="flex items-center"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>
<div class="flex items-end"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>
<div class="flex items-stretch"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>
This page shows four boxes with three items each. Each box uses a different items-* class to align the items vertically inside a flex container. You can see how items line up at the top, center, bottom, or stretch to fill the container height.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Align Items Cross Axis Example</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="p-6"> <h1 class="mb-4 text-lg font-semibold">Align Items (Cross Axis) Demo</h1> <section class="mb-8"> <h2 class="mb-2 font-medium">items-start (top aligned)</h2> <div class="flex items-start border border-gray-400 h-24 gap-4 p-2"> <div class="bg-blue-400 text-white p-2">Item 1</div> <div class="bg-green-400 text-white p-4">Item 2</div> <div class="bg-red-400 text-white p-6">Item 3</div> </div> </section> <section class="mb-8"> <h2 class="mb-2 font-medium">items-center (center aligned)</h2> <div class="flex items-center border border-gray-400 h-24 gap-4 p-2"> <div class="bg-blue-400 text-white p-2">Item 1</div> <div class="bg-green-400 text-white p-4">Item 2</div> <div class="bg-red-400 text-white p-6">Item 3</div> </div> </section> <section class="mb-8"> <h2 class="mb-2 font-medium">items-end (bottom aligned)</h2> <div class="flex items-end border border-gray-400 h-24 gap-4 p-2"> <div class="bg-blue-400 text-white p-2">Item 1</div> <div class="bg-green-400 text-white p-4">Item 2</div> <div class="bg-red-400 text-white p-6">Item 3</div> </div> </section> <section> <h2 class="mb-2 font-medium">items-stretch (stretch to fill height)</h2> <div class="flex items-stretch border border-gray-400 h-24 gap-4 p-2"> <div class="bg-blue-400 text-white p-2">Item 1</div> <div class="bg-green-400 text-white p-4">Item 2</div> <div class="bg-red-400 text-white p-6">Item 3</div> </div> </section> </body> </html>
Remember, items-* classes only work inside a flex container.
If your flex direction is flex-col, the cross axis is horizontal, so items-* aligns items left, center, or right.
Use your browser's developer tools to inspect the flex container and see how alignment changes when you toggle these classes.
Align items controls vertical or horizontal alignment inside flex containers.
Use items-start, items-center, items-end, or items-stretch to change alignment on the cross axis.
It helps make your layouts look balanced and neat.
Practice
items-center do in a flex container?Solution
Step 1: Understand cross axis in flexbox
The cross axis is perpendicular to the main axis. For a row flex container, it is vertical.Step 2: Identify what
items-centerdoesitems-centercenters items along the cross axis, so vertically center in a row.Final Answer:
Aligns flex items vertically centered on the cross axis -> Option DQuick Check:
items-center = vertical center [OK]
- Confusing main axis with cross axis
- Thinking items-center aligns horizontally
- Mixing items-center with justify-center
Solution
Step 1: Recall cross axis alignment classes
items-startaligns at the top/start,items-endaligns at the bottom/end,items-centercenters,items-stretchstretches.Step 2: Match bottom alignment
Bottom alignment on cross axis is done byitems-end.Final Answer:
items-end -> Option AQuick Check:
items-end = bottom align [OK]
- Using items-start for bottom alignment
- Confusing items-stretch with bottom alignment
- Mixing justify-end with items-end
<div class="flex items-start h-32 bg-gray-100"> <div class="w-16 h-16 bg-blue-500"></div> <div class="w-16 h-16 bg-red-500"></div> </div>What will be the vertical alignment of the blue and red boxes inside the container?
Solution
Step 1: Analyze the container classes
The container hasflexanditems-start.items-startaligns items at the start of the cross axis (top for row).Step 2: Determine item alignment
Both child divs will align at the top inside the 8rem tall container.Final Answer:
Both boxes aligned at the top of the container -> Option BQuick Check:
items-start = top align [OK]
- Assuming items-center aligns top
- Thinking items-start stretches items
- Confusing justify-content with items alignment
items-center instead of the correct class. What is the problem?Solution
Step 1: Understand
items-centereffectitems-centercenters items on the cross axis, so they keep their height and align in the middle.Step 2: Compare with
items-stretchitems-stretchmakes items fill the container height, stretching them vertically.Final Answer:
Items will be vertically centered, not stretched -> Option AQuick Check:
items-center ≠ stretch [OK]
- Confusing items-center with items-stretch
- Expecting items-center to fill container height
- Mixing justify-content with items alignment
flex-col and want to align items horizontally centered. Which Tailwind class should you use?Solution
Step 1: Identify cross axis for flex-col
Withflex-col, the main axis is vertical, so the cross axis is horizontal.Step 2: Choose class for horizontal alignment on cross axis
items-centeraligns items centered on the cross axis, so horizontally centered in this case.Final Answer:
items-center -> Option CQuick Check:
flex-col cross axis = horizontal, use items-center [OK]
- Using justify-center for cross axis alignment
- Confusing main and cross axis directions
- Choosing items-end for center alignment
Ready to prove it?
Pass the test and this pattern moves unknown
