Logo Putra Jaya
Putra Jaya Manusia Biasa

Breakpoint SCSS

Yang sering ku pakai untuk media query lebih cepat dan mudah saat menggunakan scss

Variabel untuk setiap ukuran:

// _variables.scss
$breakpoints: (
  xs:   20em,     // 320px
  sm:   36em,     // 576px
  md:   48em,     // 768px
  lg:   62em,     // 992px
  xl:   75em,     // 1200px
  xxl:  87.5em    // 1400px
);

Mixins Breakpoints:

// _breakpoints.scss
@use './variables' as v;
@use "sass:map";

@mixin min($breakpoint) {
  @if map.has-key(v.$breakpoints, $breakpoint) {
    @media screen and (min-width: map.get(v.$breakpoints, $breakpoint)) {
      @content;
    }
  } @else if type-of($breakpoint) == number {
    @media screen and (min-width: $breakpoint) {
      @content;
    }
  } @else {
    @warn "Breakpoint '#{$breakpoint}' not found. Available breakpoints: #{map-keys(v.$breakpoints)}";
  }
}

@mixin max($breakpoint) {
  @if map.has-key(v.$breakpoints, $breakpoint) {
    @media screen and (max-width: map.get(v.$breakpoints, $breakpoint)) {
      @content;
    }
  } @else if type-of($breakpoint) == number {
    @media screen and (max-width: $breakpoint) {
      @content;
    }
  } @else {
    @warn "Breakpoint '#{$breakpoint}' not found. Available breakpoints: #{map-keys(v.$breakpoints)}";
  }
}

@mixin between($from, $to) {
  @if map.has-key(v.$breakpoints, $from) and map.has-key(v.$breakpoints, $to) {
    @media screen and (min-width: map.get(v.$breakpoints, $from)) and (max-width: map.get(v.$breakpoints, $to)) {
      @content;
    }
  } @else if type-of($from) == number and type-of($to) == number {
    @media screen and (min-width: $from) and (max-width: $to) {
      @content;
    }
  } @else {
    @warn "One or both breakpoints not found. Available breakpoints: #{map-keys(v.$breakpoints)}";
  }
}

Simpan Biar ngak lupa 😅