Performance: Responsive breakpoint mixin patterns
MEDIUM IMPACT
This affects page load speed and rendering by controlling CSS size and complexity, impacting how fast styles apply and how stable the layout is.
$breakpoints: ( large: 1200px, medium: 900px, small: 600px ); @mixin respond-to($breakpoint) { $value: map-get($breakpoints, $breakpoint); @if $value { @media (max-width: $value) { @content; } } } .element { font-size: 1.5rem; @include respond-to('medium') { font-size: 1.2rem; } @include respond-to('small') { font-size: 1rem; } }
@mixin breakpoint($size) { @if $size == 'small' { @media (max-width: 600px) { @content; } } @if $size == 'medium' { @media (max-width: 900px) { @content; } } @if $size == 'large' { @media (max-width: 1200px) { @content; } } } .element { @include breakpoint('small') { font-size: 1rem; } @include breakpoint('medium') { font-size: 1.2rem; } @include breakpoint('large') { font-size: 1.5rem; } }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Repeated media queries per element | No extra DOM nodes | Multiple reflows if layout changes per breakpoint | Higher paint cost due to style recalculation | [X] Bad |
| Centralized breakpoint map with ordered queries | No extra DOM nodes | Minimal reflows with efficient style changes | Lower paint cost due to smaller CSS | [OK] Good |