Bird
Raised Fist0
CSSmarkup~5 mins

Grid vs flexbox in CSS - Quick Revision & Key Differences

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
Recall & Review
beginner
What is CSS Flexbox used for?
Flexbox is used to arrange items in a single row or column, making it easy to align and distribute space among items in one dimension.
Click to reveal answer
beginner
What is CSS Grid used for?
Grid is used to create two-dimensional layouts, allowing you to arrange items in rows and columns simultaneously.
Click to reveal answer
intermediate
When should you choose Flexbox over Grid?
Choose Flexbox when you need to layout items in a single row or column, like a navigation bar or a list of buttons.
Click to reveal answer
intermediate
When is CSS Grid more suitable than Flexbox?
Use Grid when you want to design complex layouts with rows and columns, like a photo gallery or a webpage layout.
Click to reveal answer
intermediate
Can Flexbox and Grid be used together?
Yes! You can use Grid for the main page layout and Flexbox inside grid items to align content easily.
Click to reveal answer
Which CSS layout method is best for arranging items in both rows and columns?
AGrid
BFlexbox
CFloat
DPosition absolute
Flexbox is mainly designed to work in which dimension?
ATwo dimensions
BThree dimensions
CNo dimension
DOne dimension
Which layout method would you use for a navigation bar with horizontal links?
AFlexbox
BFloat
CTable
DGrid
Can you use Flexbox inside a Grid container?
AOnly with JavaScript
BNo, they cannot be combined
CYes, Flexbox can be used inside Grid items
DOnly in older browsers
Which CSS property defines the main axis in Flexbox?
Agrid-template-columns
Bflex-direction
Cjustify-content
Dalign-items
Explain the main differences between CSS Grid and Flexbox and when to use each.
Think about how many directions you want to arrange items.
You got /4 concepts.
    Describe a real-life example where combining Grid and Flexbox would be helpful.
    Imagine a webpage with multiple sections and buttons inside them.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which CSS layout method is best for arranging items in both rows and columns simultaneously?
      easy
      A. Flexbox
      B. Grid
      C. Float
      D. Position absolute

      Solution

      1. Step 1: Understand layout capabilities

        Flexbox arranges items in one direction: row or column, but not both at once.
      2. Step 2: Identify the method for two-dimensional layout

        Grid allows arranging items in rows and columns simultaneously, making it suitable for complex layouts.
      3. Final Answer:

        Grid -> Option B
      4. Quick Check:

        Two-dimensional layout = Grid [OK]
      Hint: Grid = rows + columns; Flexbox = single row or column [OK]
      Common Mistakes:
      • Thinking Flexbox can handle rows and columns at the same time
      • Confusing float with layout methods
      • Assuming position absolute arranges items in grid
      2. Which of the following is the correct CSS syntax to create a flex container?
      easy
      A. display: grid;
      B. flex-container: true;
      C. flex-direction: grid;
      D. display: flex;

      Solution

      1. Step 1: Identify the property to create flex container

        The CSS property to create a flex container is display: flex;.
      2. Step 2: Check other options for correctness

        display: grid; creates a grid container, not flex. flex-direction: grid; is invalid. flex-container: true; is not a valid CSS property.
      3. Final Answer:

        display: flex; -> Option D
      4. Quick Check:

        Flex container syntax = display: flex [OK]
      Hint: Flex container always uses display: flex [OK]
      Common Mistakes:
      • Using display: grid instead of flex
      • Trying to set flex-direction to grid
      • Using non-existent CSS properties
      3. Given the CSS below, what will be the layout of the items inside .container?
      .container {
        display: flex;
        flex-direction: column;
        gap: 1rem;
      }
      .item {
        width: 100px;
        height: 50px;
        background-color: lightblue;
      }
      medium
      A. Items arranged horizontally with 1rem gap
      B. Items arranged in a grid with 1rem gap
      C. Items arranged vertically with 1rem gap
      D. Items stacked with no gap

      Solution

      1. Step 1: Analyze flex container properties

        The container uses display: flex; and flex-direction: column;, so items stack vertically.
      2. Step 2: Understand gap effect

        The gap: 1rem; adds space between items vertically in column direction.
      3. Final Answer:

        Items arranged vertically with 1rem gap -> Option C
      4. Quick Check:

        flex-direction: column + gap = vertical spacing [OK]
      Hint: flex-direction: column stacks items vertically [OK]
      Common Mistakes:
      • Assuming flex defaults to row direction
      • Ignoring the gap property
      • Thinking items form a grid with flex
      4. Identify the error in this CSS code if the goal is to create a 3-column grid layout:
      .grid-container {
        display: flex;
        grid-template-columns: repeat(3, 1fr);
      }
      medium
      A. Using flex display with grid-template-columns property
      B. Missing grid-gap property
      C. Incorrect repeat syntax in grid-template-columns
      D. Missing width on container

      Solution

      1. Step 1: Check display property

        The container uses display: flex;, which does not support grid-template-columns.
      2. Step 2: Understand property compatibility

        grid-template-columns works only with display: grid;. Mixing flex display with grid properties causes no effect or errors.
      3. Final Answer:

        Using flex display with grid-template-columns property -> Option A
      4. Quick Check:

        grid-template-columns requires display: grid [OK]
      Hint: Grid properties need display: grid, not flex [OK]
      Common Mistakes:
      • Mixing flex display with grid properties
      • Assuming repeat syntax is wrong
      • Forgetting to set display property
      5. You want to create a responsive photo gallery with rows and columns that adjust automatically. Which CSS approach is best and why? A developer tries this CSS:
      .gallery {
        display: flex;
        flex-wrap: wrap;
        gap: 1rem;
      }
      .photo {
        flex: 1 1 200px;
        height: 150px;
      }
      Why might CSS Grid be a better choice here?
      hard
      A. Grid allows explicit control of rows and columns, making layout predictable and consistent.
      B. Flexbox automatically creates rows and columns without extra code.
      C. Grid requires less CSS code than flexbox for any layout.
      D. Flexbox does not support gaps between items.

      Solution

      1. Step 1: Analyze flexbox gallery approach

        Flexbox with wrapping creates rows but columns depend on item size and wrapping, which can be uneven and unpredictable.
      2. Step 2: Compare with grid advantages

        Grid lets you define explicit rows and columns, so the gallery layout is consistent and easier to control across screen sizes.
      3. Final Answer:

        Grid allows explicit control of rows and columns, making layout predictable and consistent. -> Option A
      4. Quick Check:

        Responsive rows + columns = Grid best choice [OK]
      Hint: Use Grid for predictable rows and columns in galleries [OK]
      Common Mistakes:
      • Assuming flex-wrap creates perfect grid layouts
      • Thinking Grid always uses less CSS
      • Believing flexbox cannot have gaps