Bird
Raised Fist0
CSSmarkup~8 mins

Align content in CSS - Performance & Optimization

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Performance: Align content
MEDIUM IMPACT
Align content affects how extra space is distributed in a container with multiple lines, impacting layout calculation and paint.
Aligning multiple lines of content inside a flex or grid container
CSS
.container {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  height: 500px;
}
.item {
  flex: 1 0 100px;
}
Aligning content to flex-start avoids stretching and reduces layout recalculations.
📈 Performance Gainsingle reflow regardless of line count
Aligning multiple lines of content inside a flex or grid container
CSS
.container {
  display: flex;
  flex-wrap: wrap;
  align-content: stretch;
  height: 500px;
}
.item {
  flex: 1 0 100px;
}
Using align-content: stretch causes the browser to recalculate layout for each line to stretch items, triggering multiple reflows.
📉 Performance Costtriggers multiple reflows proportional to number of lines
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
align-content: stretchmedium (multiple lines)multiple reflowsmedium[X] Bad
align-content: flex-startmedium (multiple lines)single reflowlow[OK] Good
Rendering Pipeline
Align-content affects the Layout stage by determining how extra space is distributed among wrapped lines, which influences Paint and Composite stages.
Layout
Paint
Composite
⚠️ BottleneckLayout
Core Web Vital Affected
CLS
Align content affects how extra space is distributed in a container with multiple lines, impacting layout calculation and paint.
Optimization Tips
1Avoid align-content: stretch on containers with many wrapped lines to reduce reflows.
2Prefer align-content values like flex-start or center for better layout performance.
3Use browser DevTools Performance panel to monitor layout events when adjusting align-content.
Performance Quiz - 3 Questions
Test your performance knowledge
Which align-content value generally causes fewer layout recalculations in a multi-line flex container?
Astretch
Bflex-start
Cspace-between
Dspace-around
DevTools: Performance
How to check: Record a performance profile while resizing or changing align-content. Look for Layout events and their duration.
What to look for: High number or long duration of Layout events indicates costly reflows caused by align-content usage.

Practice

(1/5)
1. What does the CSS property align-content control in a flex container?
easy
A. The alignment of individual items along the main axis
B. The background color of the container
C. The font size of the container's text
D. The spacing between rows or columns when items wrap to multiple lines

Solution

  1. Step 1: Understand the role of align-content

    This property controls how multiple rows or columns are spaced inside a container when items wrap to more than one line.
  2. Step 2: Differentiate from other properties

    align-items aligns individual items on a single line, not spacing between lines. Font size and background color are unrelated.
  3. Final Answer:

    The spacing between rows or columns when items wrap to multiple lines -> Option D
  4. Quick Check:

    Align-content = spacing between wrapped lines [OK]
Hint: Align-content affects multi-line spacing, not single items [OK]
Common Mistakes:
  • Confusing align-content with align-items
  • Thinking it changes font or colors
  • Using it when items do not wrap
2. Which of the following is the correct syntax to center content along the cross axis in a multi-line flex container?
easy
A. align-content: center;
B. align-items: center;
C. justify-content: center;
D. text-align: center;

Solution

  1. Step 1: Identify the property for multi-line alignment

    align-content centers the space between multiple lines in a flex container.
  2. Step 2: Differentiate from other alignment properties

    align-items centers items on a single line, justify-content aligns along the main axis, and text-align affects inline text alignment.
  3. Final Answer:

    align-content: center; -> Option A
  4. Quick Check:

    Center multi-line content with align-content: center [OK]
Hint: Use align-content for multi-line centering, not align-items [OK]
Common Mistakes:
  • Using align-items instead of align-content
  • Confusing justify-content with align-content
  • Applying text-align to flex containers
3. Given this CSS for a flex container with wrapped items:
display: flex;
flex-wrap: wrap;
align-content: space-between;
height: 200px;

What will align-content: space-between; do visually?
medium
A. Stretch rows to fill the container height
B. Place the rows evenly with space between them, top and bottom edges have no extra space
C. Stack all rows at the top with no space between
D. Center all rows vertically with equal space above and below

Solution

  1. Step 1: Understand space-between behavior

    This value distributes rows so the first row is at the top, the last row at the bottom, and equal space between rows.
  2. Step 2: Visualize the effect in a 200px tall container

    Rows spread out vertically with no extra space above the first or below the last row.
  3. Final Answer:

    Place the rows evenly with space between them, top and bottom edges have no extra space -> Option B
  4. Quick Check:

    space-between = equal gaps between rows, edges flush [OK]
Hint: space-between puts space only between rows, not edges [OK]
Common Mistakes:
  • Thinking space-between adds space at container edges
  • Confusing with space-around or space-evenly
  • Expecting rows to stretch to fill height
4. You wrote this CSS but the align-content property has no visible effect:
display: flex;
flex-wrap: nowrap;
align-content: center;
height: 150px;

What is the main reason align-content does not work here?
medium
A. align-content requires justify-content to be set
B. align-content only works with grid layouts
C. flex-wrap is set to nowrap, so items do not wrap to multiple lines
D. The container height is too small to see the effect

Solution

  1. Step 1: Check the flex-wrap value

    It is set to nowrap, so all items stay on a single line.
  2. Step 2: Understand when align-content works

    align-content only affects spacing between multiple lines, so it has no effect if items do not wrap.
  3. Final Answer:

    flex-wrap is set to nowrap, so items do not wrap to multiple lines -> Option C
  4. Quick Check:

    Align-content needs wrapped lines to work [OK]
Hint: Ensure flex-wrap allows wrapping for align-content to work [OK]
Common Mistakes:
  • Assuming align-content works without wrapping
  • Thinking align-content applies to grid only
  • Ignoring flex-wrap setting
5. You want a flex container with wrapped items to fill its height by stretching rows evenly. Which CSS setup achieves this?
hard
A. display: flex; flex-wrap: wrap; align-content: stretch; height: 300px;
B. display: flex; flex-wrap: nowrap; align-content: stretch; height: 300px;
C. display: flex; flex-wrap: wrap; align-items: stretch; height: 300px;
D. display: flex; flex-wrap: wrap; justify-content: stretch; height: 300px;

Solution

  1. Step 1: Identify the need for multi-line stretching

    To stretch rows evenly, align-content: stretch; is required and items must wrap.
  2. Step 2: Confirm correct flex-wrap and height

    flex-wrap: wrap; allows multiple lines, and setting a container height (300px) lets stretching be visible.
  3. Step 3: Exclude incorrect options

    flex-wrap: nowrap; prevents wrapping, align-items affects single line items, and justify-content controls main axis, not cross axis.
  4. Final Answer:

    display: flex; flex-wrap: wrap; align-content: stretch; height: 300px; -> Option A
  5. Quick Check:

    Stretch multi-line rows with align-content: stretch and wrap [OK]
Hint: Use flex-wrap: wrap and align-content: stretch to fill height [OK]
Common Mistakes:
  • Using nowrap disables multi-line stretching
  • Confusing align-items with align-content
  • Using justify-content instead of align-content