log
Swift Code Chronicles

Simplifying media queries with SCSS

Published on December 27, 2024
Updated on January 17, 2025
12 min read
CSS3HTML5

In frontend development, @media queries are often used to adjust styles based on the current browser size for responsive design. Here’s a common example:

.container {
  display: flex;
  width: 100%;
}

@media (min-width: 320px) {
  .container {
    height: 50px;
  }
}

@media (min-width: 481px) {
  .container {
    height: 100px;
  }
}

@media (min-width: 769px) {
  .container {
    height: 150px;
  }
}

@media (min-width: 1025px) {
  .container {
    height: 200px;
  }
}

While this method is functionally correct, as the number of responsive sections increases, the code becomes lengthy and harder to maintain. Is there a more elegant solution? Yes, there is!


Optimizing Responsive Design with SCSS

By leveraging SCSS features like @mixin and @include, you can significantly enhance the structure and maintainability of your code. Here’s how you can optimize it.

Defining @mixin

Start by defining commonly used breakpoints as mixin to make them reusable:

@mixin sm() {
  @media (min-width: 576px) {
    @content;
  }
}

@mixin md() {
  @media (min-width: 768px) {
    @content;
  }
}

@mixin lg() {
  @media (min-width: 769px) {
    @content;
  }
}

@mixin xl() {
  @media (min-width: 1025px) {
    @content;
  }
}

Simplifying Code with @include

Wherever responsive adjustments are needed, use @include to call the mixin, resulting in a much cleaner codebase:

.container {
  display: flex;
  width: 100%;
  
  @include sm {
    height: 50px;
  }

  @include md {
    height: 100px;
  }

  @include lg {
    height: 150px;
  }

  @include xl {
    height: 200px;
  }
}

Benefits of This Optimization

  1. Improved Readability
  • The previously verbose media query code is now simplified and easier to understand at a glance.
  1. Enhanced Reusability
  • The defined mixin can be reused across multiple components, eliminating the need to repeatedly write the same media query code.
  1. Ease of Maintenance
  • When breakpoints need adjustments, you only need to modify the mixin, and all related code will automatically update.

Conclusion

Using SCSS @mixin and @include, you can achieve an elegant and efficient responsive design. This approach not only reduces the amount of code but also greatly improves readability and maintainability. It allows you to handle complex responsive requirements more effectively.

About

A personal blog sharing technical insights, experiences and thoughts

Quick Links

Contact

  • Email: hushukang_blog@proton.me
  • GitHub

© 2025 Swift Code Chronicles. All rights reserved