2012-07-16 80 views
1

我已经使用SASS几天了,并且遇到了某个问题。SCSS:Mixins只能在文档的根目录下定义

这里呈现完美的SCSS:

@import "light"; 
@import "basic"; 
@import "fancybox"; 

因为它是一个用户的风格,火狐需要@ -moz-文件规则的所有站点特定的CSS,像这样:

@namespace url(http://www.w3.org/1999/xhtml); 
@-moz-document domain("clubfile.ru"){ 
    @import "light"; 
    @import "basic"; 
    @import "fancybox"; 
} 

不幸的是,这不起作用,编译器返回一个错误:

Mixins may only be defined at the root of a document

以及在_basic.scss中对mixins的引用。宝石版本是Sass 3.1.20和Compass 0.12.2。

那么,有没有办法解决或忽略该错误?

更新1:我认为-moz规则的语法,类似于SCSS mixins,造成了所有的麻烦。

回答

1

你的“light”,“basic”或“fancybox”文件是否包含mixin定义,或导入包含mixin定义的文件?如果是这样,你将不得不将mixin移出。

您可以尝试将mixin移动到只在需要的地方放入_mixins partial和@import。

+0

“basic”包含所有的定义。我试过两种移动它们的方法: 1.创建_mixins并将其导入到根scss文件中的其他导入之前。然后我得到“未定义的mixins错误”。 2.在导入之前,按照在根scss中定义mixins。效果很好,但在众多文件中使用相同的内容会对DRY造成干扰。 – 2012-07-17 17:28:04

+0

“轻”,“基本”和“fancybox”部分?如果不是,他们可能应该是。导入直接编译Sass文件是不好的做法。如果你将它们转换成partials,他们会停止抱怨未定义的mixins,因为它们不会被编译,直到一个文件导入它们(并且你将在上面导入_mixins)。 – Jackie 2012-07-17 17:58:47

+0

在根目录开始时使用单独的mixins进行编译。感谢帮助。 – 2012-07-18 07:12:33