Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save media query in variable

Is it possible to save a media query as a variable?

This don't work:

$max: @media (max-width: 980px) and (min-width: 768px);

I'm not looking for how to save max-width and min-width, but the whole string.

like image 695
lajlev Avatar asked Dec 16 '22 02:12

lajlev


2 Answers

Use something like this

  @mixin respondTo($media) {
    @if $media == smallScreen {
      @media only screen and (max-width: $screenSmall - 1) { @content; }
    } @else if $media == mediumScreen {
      @media only screen and (max-width: $screenMedium) and (min-width: $screenSmall) { @content; }
    } @else if $media == largeScreen {
      @media only screen and (min-width: $screenXlarge) { @content; }
    }
  }

Then you can do something like the following:

.products {
  @include respondTo(smallScreen) {
    width: 300px;
  }

  @include respondTo(mediumScreen) {
    width: 700px;
  }
}
like image 130
Daniel Fischer Avatar answered Jan 04 '23 11:01

Daniel Fischer


As of Sass 3.2, you can store the media query in a variable like this:

$bp-small: "(min-width: 30em)";

@media #{$bp-small} {
    .foo {
        color: red;
    }
}
like image 24
cimmanon Avatar answered Jan 04 '23 11:01

cimmanon