I'm working on some SCSS code for a responsive layout, for scaling the
font sizes up and down using media queries.  I think that I may have
found a bug in the @media directive, but maybe I just don't know what
I'm doing.

SCSS:

$base_width: 960px;
$font_size: 18px;
$line_height: 24px;

// Step down to the smallest width supported.
$current_width: $base_width;
@while $current_width > 360 {
  $current_width: $current_width - $font_size;
}
// Step up through the widest width supported.
@while $current_width < 2048 {
  $current_width: $current_width + $font_size;
  $columns: 4;
  @if ($current_width <= 512) { $columns: 2; }
  @if ($current_width > 512 and $current_width <= 768) { $columns:
3; }
  $column_width: $current_width / $columns;
  // SASS will not accept the $current_width variable and screws up on
#{}
  @media screen and (min-width: #{$current_width} px ) {
    html > body {
      font-size: $column_width * $font_size / $column_width;
      line-height: $column_width * $line_height / $column_width;
    }
  }
}

This code is generating incorrect font sizes because of a dumb math
problem but that's a completely different problem.  The point of the
code is that it's generating a series of @media rules, in the last few
lines.  The problem is that this is the output:

@media screen and (min-width: #{ px ) {
  /* line 176, ../../app/stylesheets/screen.scss */
  html > body {
    font-size: 18px;
    line-height: 24px;
  }
}

@media screen and (min-width: #{ px ) {
  /* line 176, ../../app/stylesheets/screen.scss */
  html > body {
    font-size: 18px;
    line-height: 24px;
  }
}

Note the "min-width: #{ px".  The $current-width variable isn't
passing through.

I can't use just this without the interpolation:

  @media screen and (min-width: $current_width px ) {
    html > body {
      font-size: $column_width * $font_size / $column_width;
      line-height: $column_width * $line_height / $column_width;
    }
  }

...because then SCSS complains:

error app/stylesheets/screen.scss (Line 175: Invalid CSS after "...nd
(min-width: ": expected expression (e.g. 1px, bold), was
"$current_width ...")

(Same exact error without the "px".)

So I was wondering: have I found a bug in the @media directive, or do
I just not know what I'm doing?

-- 
You received this message because you are subscribed to the Google Groups 
"Haml" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/haml?hl=en.

Reply via email to