Bird
Raised Fist0
Tailwindmarkup~8 mins

Flex basis and sizing in Tailwind - Performance & Optimization

Choose your learning style10 modes available
Performance: Flex basis and sizing
MEDIUM IMPACT
This affects how quickly the browser calculates layout and paints flexible items, impacting page load and responsiveness.
Setting flexible item sizes in a flex container
Tailwind
<div class="flex">
  <div class="basis-1/2">Content</div>
  <div class="basis-1/2">Content</div>
</div>
Using fixed flex-basis (like basis-1/2) lets the browser calculate layout faster without measuring content.
📈 Performance Gainsingle reflow, faster LCP by 10-15ms on typical layouts
Setting flexible item sizes in a flex container
Tailwind
<div class="flex">
  <div class="flex-auto">Content</div>
  <div class="flex-auto">Content</div>
</div>
Using flex-auto (flex-basis: auto) makes the browser measure content size causing more layout recalculations.
📉 Performance Costtriggers multiple reflows on content changes, blocking rendering for 10-20ms on complex layouts
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
flex-auto (flex-basis: auto)Measures content sizeMultiple reflows on content changeHigher paint cost due to layout thrashing[X] Bad
basis-1/2 (fixed flex-basis)No content measurement neededSingle reflowLower paint cost, stable layout[OK] Good
Rendering Pipeline
Flex basis sizing affects the Layout stage where the browser calculates sizes of flex items before painting.
→Layout
→Paint
→Composite
⚠️ BottleneckLayout stage is most expensive due to content measurement when flex-basis is auto.
Core Web Vital Affected
LCP
This affects how quickly the browser calculates layout and paints flexible items, impacting page load and responsiveness.
Optimization Tips
1Use fixed flex-basis values to reduce layout recalculations.
2Avoid flex-basis: auto when possible to prevent costly content measurement.
3Fixed sizing improves Largest Contentful Paint by speeding layout.
Performance Quiz - 3 Questions
Test your performance knowledge
Which flex-basis value generally improves layout performance?
Aflex-grow: 1 with no basis
Bflex-basis: auto
CA fixed size like basis-1/3
DUsing margin for sizing
DevTools: Performance
How to check: Record a performance profile while resizing or updating flex items. Look for Layout events and their duration.
What to look for: Long Layout times or multiple Layout events indicate costly flex-basis calculations.

Practice

(1/5)
1. What does the Tailwind class basis-1/3 do in a flex container?
easy
A. Makes the flex item grow to fill one-third of the container
B. Sets the initial size of the flex item to one-third of the container's main size
C. Prevents the flex item from shrinking below one-third of its size
D. Sets the flex item to always be exactly one-third of the container width regardless of content

Solution

  1. Step 1: Understand flex basis meaning

    Flex basis sets the starting size of a flex item before growing or shrinking.
  2. Step 2: Interpret basis-1/3 in Tailwind

    This class sets the flex basis to one-third of the container's main size, not forcing exact size but initial size.
  3. Final Answer:

    Sets the initial size of the flex item to one-third of the container's main size -> Option B
  4. Quick Check:

    Flex basis = initial size = one-third [OK]
Hint: Flex basis sets start size, not final size [OK]
Common Mistakes:
  • Confusing basis with grow or shrink
  • Thinking basis fixes size exactly
  • Assuming basis prevents shrinking
2. Which of the following is the correct Tailwind class to set a flex item's basis to 16rem?
easy
A. basis-16rem
B. basis-64rem
C. basis-16
D. basis-64

Solution

  1. Step 1: Recall Tailwind sizing scale

    Tailwind uses numeric scale where 64 equals 16rem (4rem * 16).
  2. Step 2: Match class syntax

    The correct class is basis-64 to set basis to 16rem, no 'rem' suffix used.
  3. Final Answer:

    basis-64 -> Option D
  4. Quick Check:

    basis-64 = 16rem in Tailwind [OK]
Hint: Tailwind uses numbers, not units, for spacing [OK]
Common Mistakes:
  • Adding 'rem' suffix in class name
  • Using wrong numeric scale
  • Confusing basis with width classes
3. Given this HTML snippet:
<div class="flex w-96">
  <div class="basis-1/4 bg-blue-500">Box 1</div>
  <div class="basis-1/2 bg-red-500">Box 2</div>
  <div class="basis-1/4 bg-green-500">Box 3</div>
</div>

What will be the width of Box 2 inside the 24rem wide container?
medium
A. 6rem
B. 24rem
C. 12rem
D. 18rem

Solution

  1. Step 1: Calculate container width in rem

    The container width is 24rem (w-96 means 24rem).
  2. Step 2: Calculate Box 2 basis size

    Box 2 has basis-1/2, so initial size is half of 24rem = 12rem.
  3. Final Answer:

    12rem -> Option C
  4. Quick Check:

    Half of 24rem = 12rem [OK]
Hint: Multiply container width by basis fraction [OK]
Common Mistakes:
  • Confusing basis fraction with grow factor
  • Using container width in px instead of rem
  • Adding basis sizes instead of calculating individually
4. You wrote this Tailwind code:
<div class="flex">
  <div class="basis-2/3">Item 1</div>
  <div class="basis-1/2">Item 2</div>
</div>

But the items overflow the container width. What is the main reason?
medium
A. The sum of basis sizes (2/3 + 1/2) exceeds 1, causing overflow
B. Missing flex-grow classes to allow shrinking
C. Tailwind does not support fractional basis classes
D. The container needs flex-wrap to prevent overflow

Solution

  1. Step 1: Calculate the sum of basis fractions

    2/3 + 1/2 = 4/6 + 3/6 = 7/6 > 1.
  2. Step 2: Understand the effect

    When the sum of flex-basis values exceeds 1, it causes the flex items to overflow the container.
  3. Final Answer:

    The sum of basis sizes (2/3 + 1/2) exceeds 1, causing overflow -> Option A
  4. Quick Check:

    Sum of basis fractions > 1 causes overflow [OK]
Hint: Check if basis fractions sum over 1 for overflow [OK]
Common Mistakes:
  • Assuming basis fractions always fit container
  • Ignoring default flex shrink behavior
  • Confusing grow with shrink effects
5. You want three flex items inside a container to have these widths initially: 25%, 50%, and 25%. You also want the middle item to grow twice as fast as the others when space is available. Which Tailwind classes correctly achieve this?
hard
A. basis-1/4 grow, basis-1/2 [flex-grow:2], basis-1/4 grow
B. basis-1/4 flex-grow-1, basis-1/2 flex-grow-2, basis-1/4 flex-grow-1
C. basis-1/4 grow, basis-1/2 grow [flex-grow:2], basis-1/4 grow
D. basis-1/4 grow, basis-1/2 grow, basis-1/4 grow

Solution

  1. Step 1: Set correct basis classes

    Use basis-1/4 for 25% and basis-1/2 for 50% widths.
  2. Step 2: Apply grow classes

    Tailwind uses grow for flex-grow:1 and [flex-grow:2] for flex-grow:2.
  3. Step 3: Assign grow classes to items

    First and third items get grow, middle item gets [flex-grow:2] to grow twice as fast.
  4. Final Answer:

    basis-1/4 grow, basis-1/2 [flex-grow:2], basis-1/4 grow -> Option A
  5. Quick Check:

    Use grow and [flex-grow:2] with basis fractions [OK]
Hint: Use grow and [flex-grow:2] classes for different grow rates [OK]
Common Mistakes:
  • Using non-existent flex-grow-1 class
  • Combining grow and grow-2 on same element
  • Forgetting to set basis sizes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard