2

I was wondering if there is a way to achieve the following output in Compass/Sass?

$padding: 3em

div {
    padding: $padding;
}

@media screen and (max-width: 780px) {
    $padding: 2em;
}

/* outputs:

div {
    padding: 3em;
}

@media screen and (max-width: 780px) {
    div {
        padding: 2em;
    }
}

*/​

Is there any way of doing this? Basically getting Sass to compile all properties which have a variable as their value automatically within the scope of a media query when that variable is changed.

BoltClock
  • 700,868
  • 160
  • 1,392
  • 1,356

2 Answers2

2

The easiest would be to use a mixin and pass an argument.

@mixin divpadding($padding: 3em)
  padding: $padding

div
  +divpadding

@media screen and (max-width: 780px)
  div
    +divpadding(2em)
bookcasey
  • 39,223
  • 13
  • 77
  • 94
1

Here's how I achieved it in the end. Using mixins.

+padding($padding: 3em)
    div {
        padding: $padding;
    }

+padding

@media screen and (max-width: 780px)
    +padding(2em)

/* outputs:

div {
    padding: 3em;
}

@media screen and (max-width: 780px) {
    div {
        padding: 2em;
    }
}

*/​