2012-07-16 79 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