Simple solution for writing media queries using a SCSS mixin.
$breakpoint-small: '360px';
$breakpoint-medium: '720px';
$breakpoint-large: '1080px';
@mixin mediaQuery($query) {
$queries: (
small-only: '(max-width: #{$breakpoint-small})',
medium-only: '(min-width: #{$breakpoint-small}) and (max-width: #{$breakpoint-medium})',
large-only: '(min-width: #{$breakpoint-medium}) and (max-width: #{$breakpoint-large})',
medium-up: '(min-width: #{$breakpoint-small})',
large-up: '(min-width: #{$breakpoint-medium})',
);
@if map-has-key($queries, $query) {
// Get the query value from the map.
$query-value: map-get($queries, $query);
// Write the media query.
@media #{$query-value} {
@content;
}
} @else {
// Log a warning if the media query doesn't exist in the map.
@warn 'Invalid media query: #{$query}.';
}
}
@include mediaQuery(small-only) {
font-size: $text-small;
}
@include mediaQuery(medium-up) {
font-size: $text-medium;
}
That's all! Simple and elegant way of writing media queries and making sure our pages are responsive.
Let me know your feedback/suggestions in the comments.
- Ayush 🙂