Fair enough. First off let me say that I love Sass. Without it my
whole setup wouldn't work and would just be a big mess. So a big
THANKS to the developers!
My use case is probably somewhat unique. I run FrugalMechanic.com
where we power ~100 whitelabel versions of our website for partners
(e.g.
autoparts.allaboutprius.com,
autoparts.mustangblog.com,
autoparts.carzi.com). The easiest way to build the whitelabels is to
embed our content into their stock html/css. For this to work I make
extensive use of the nested @import's to avoid css selector conflicts
with their stock css by making sure all of my css selectors are more
specific than theirs.
I currently have 126 sass files with 265 @import statements (some
nested, some not). The sass files that are used for the @imports
(both nested and non-nested) are all used as partials and kept in a
separate directory to avoid confusion with the sass files that are
actually used to generate the final css used by the browser.
I *personally* think the nested @import approach is cleaner because
it's more concise and less error prone (for me at least).
As a very simplified example, for frugalmechanic I have something like
this at the top level:
@import yui-resets.sass
@import base.sass
@import styles.sass
For the whitelabels (where I nest all the rules) it looks something
more like:
#frugalmechanic
@import yui-resets.sass
@import base.sass
@styles.sass
Going the mixin route would mean changing the first one
(frugalmechanic) to:
@import yui-resets.sass
@import base.sass
@import styles.sass
+base
+yui_resets
+styles
And a whitelabel would look like:
@import yui-resets.sass
@import base.sass
@import styles.sass
#frugalmechanic
+yui_resets
+base
+styles
So for frugalmechanic I've gone from 3 lines of code to 6 and the
whitelabels have gone from 4 to 7 for this simplified example.
Multiply that by my 265 @import statements and that adds quite a bit
of code that IMHO doesn't add any value.
However, I think the change I'm more concerned about is needing to add
the mixin definition to the top of all my @import'ed sass files and
indenting the entires contents of the file by 2 spaces. The 2 space
indenting makes those files less readable and more error prone since
if I mess up the indent I'll have styles escaping my nested rules
(which can be hard to debug).
-Tim
On Dec 14, 11:13 am, Chris Eppstein <
ch...@eppsteins.net> wrote:
> It was intentionally taken away because, as I understand it, it was never
> intended to work.
>
> I respect that you think this is a cleaner implementation, but I disagree. I
> think it's very confusing. Mixins are how you indicate that a particular
> block of styles are going to be nested into other selectors. Why do we need
> two mechanisms for mixing? If I open up index_page_nested_rules.sass there's
> nothing about that file that tells me how it's going to be used except,
> maybe, a comment if you thought to add one. If I see one or more mixins
> defined there, I understand, I have to go looking for where they are used.
>
> Perhaps there is some use case I haven't considered, so I'll welcome you to
> state your case for why you think this approach is better than @import +
> mixins.
>
> Chris
>
> On Mon, Dec 14, 2009 at 10:17 AM, Tim Underwood <
timunderw...@gmail.com>wrote:
>
>
>
> > In Haml/Sass 2.0.9 I'm able to do something like this:
>
> > .index_page
> > @import index_page_nested_rules.sass
>
> > .results_page
> > @import results_page_nested_rules.sass
>
> > And then everything in index_page_nested_rules.sass was nested within
> > my index_page class. But in Haml/Sass 2.2.15 I get this error:
>
> > "Sass::SyntaxError: Import directives may only be used at the root of
> > a document."
>
> > Was support for this intentionally taken away? Is there another way
> > to accomplish the same thing? Mixins kind of work but aren't as clean
> > as the nested @import's.
>
> > Thanks,
>
> > -Tim
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "Haml" group.
> > To post to this group, send email to
ha...@googlegroups.com.
> > To unsubscribe from this group, send email to
> >
haml+uns...@googlegroups.com <
haml%2Bunsu...@googlegroups.com>.