2011-09-10 80 views
17

我试图在另一个文件(home.css.scss)中引用一个文件(application.css.scss)中定义的mixin。我曾尝试将应用程序导入家中,但仍然收到“未定义的混合”错误。在rails 3.1中的scss文件之间共享mixins

有没有办法自动导入我所有的文件,或者什么是管理文件之间导入的最佳方式?

回答

25

我还没有能够跳转到3.1,但使用Compass & Sass已经有很长一段时间了,我发现最好是尝试从实际的CSS生成sass中分别管理mixin/definition sass。以这种方式,mixin文件可以像代码库一样自由处理,只要有需要就可以将其包含在内,而不必重复生成CSS规则。

所以,你可能有:

/* my-mixin-concern.scss */ 
$default_foo: 123px !default; 

@mixin some-concern($foo: $default_foo) { 
    // do something 
} 

/* application.scss */ 
$default_foo: 321px; // optionally, pre-set the default value before import. 
@import 'my-mixin-concern'; 
p { @include some-concern; } 

/* home.scss */ 
@import 'my-mixin-concern'; 
body.home p { @include some-concern(9000px); } 

这样,你明确地导入每个SCSS文件中的所有要求,同样你会如何在一个代码库这样做。

0

纯的Rails解

步骤1.重命名

application.css -> application.css.scss 

步骤2.重构

// application.css.scss 

/* 
*= require_self 
*/ 

@import "mixins.css.csss" 
@import "project.css.scss"