I started using Sass (actually, scssphp, since I'm a PHP troglodyte) and I'm loving it. It makes CSS much cleaner; just having variables makes everything easier. The only catch is whether it would work with the non-standard CSS I use with my CSS parser for behaviors. The good news is that it does, with one caveat.
Anything that looks like real CSS, even with the extra !
works fine:
$color: blue;
article {
div.major {
css: font-weight bold ! font-weight normal ;
gradient: $color white;
}
}
compiles to:
article div.major {
css: font-weight bold ! font-weight normal;
gradient: blue white; }
Which is just what we want to be passed to parsecss
. The caveat is that braces mess the scss
parser up:
div {
-jquery-show: fold {size: 5} slow;
}
Gives the error: Parse error: parse error: failed at `slow;
. There's an easy fix: quote the offending lines with unquote
(which sounds backwards, but actually means "treat the enclosed text as a string but don't enclose in quotes").
div {
-jquery-show: unquote( fold {size: 5} slow );
}
Compiles to:
div {
-jquery-show: fold {size: 5} slow; }
And it works across newlines:
div {
div {
-jquery: unquote(
$(this).each(function() {
foo();
}); /* comments pass through ! */
);
}
}
Compiles to:
div div {
-jquery: $(this).each(function() {
foo();
}); /* comments pass through ! */; }
Sweet!
Addendum 12/23/2012: After pulling my hair out for two hours, I realized that scssphp
only implements version 3.1.20 of SASS
, and the %
/@extend
syntax was introduced in version 3.2. @include
works fine, though.
Leave a Reply