Performance: Grid system mixin from scratch
This affects page load speed and rendering performance by controlling how CSS grid layouts are generated and applied.
Jump into concepts and practice - no test required
@mixin grid-good($columns) { display: grid; grid-template-columns: repeat(#{$columns}, 1fr); }
@mixin grid-bad($columns) { display: grid; grid-template-columns: repeat(#{$columns}, 1fr); > * { width: calc(100% / #{$columns}); } }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual width calc in mixin | N/A | Multiple reflows per child | Higher paint cost due to layout thrashing | [X] Bad |
| Pure CSS grid properties | N/A | Single reflow | Lower paint cost, optimized by browser | [OK] Good |
display: grid;, not flex or block.grid-template-columns: repeat($columns, 1fr); sets equal columns, and gap: $gap; sets spacing.@mixin grid($cols, $gap) {
display: grid;
grid-template-columns: repeat($cols, 1fr);
gap: $gap;
}
.container {
@include grid(3, 2rem);
}.container?display: grid;, grid-template-columns: repeat(3, 1fr);, and gap: 2rem;.@mixin grid($cols, $gap) {
display: grid;
grid-template-columns: repeat($cols 1fr);
gap: $gap;
}repeat(4, 1fr).@media (max-width: 600px), columns change to 2 with repeat(2, 1fr).