Performance: Why CSS Grid solves complex layouts
This affects how quickly and smoothly complex page layouts load and render in the browser.
<div class="grid grid-cols-3 gap-4"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> <div>Item 4</div> <div>Item 5</div> <div>Item 6</div> </div>
<div class="flex flex-wrap"> <div class="w-1/3">Item 1</div> <div class="w-1/3">Item 2</div> <div class="w-1/3">Item 3</div> <div class="w-1/3">Item 4</div> <div class="w-1/3">Item 5</div> <div class="w-1/3">Item 6</div> </div>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Flexbox with wrap for complex grid | Multiple DOM nodes | Multiple reflows per wrap | Higher paint cost due to layout shifts | [X] Bad |
| CSS Grid with defined columns and gaps | Same DOM nodes | Single reflow for layout | Lower paint cost with stable layout | [OK] Good |
grid-cols-3 sets the grid to have 3 columns.grid-rows-3 sets rows, grid-gap-3 sets spacing, grid-flow-col changes flow direction.<div class="grid grid-cols-2 gap-4"> <div>A</div> <div>B</div> <div>C</div> </div>
grid-cols-2 creates 2 columns, and gap-4 adds space between items.<div class="grid grid-cols-3 gap-2"> <div class="col-span-4">Item</div> </div>
grid-cols-3.col-span-4 tries to span 4 columns, which is more than available 3 columns, causing layout error.lg: prefix applies styles on large screens and above.grid-cols-2 sets 2 columns by default (small screens), lg:grid-cols-4 changes to 4 columns on large screens.Pass the test and this pattern moves unknown