Css 在Rails 3中导入较少的变量
我的资产文件夹中有一个global.less文件,我在其中定义了许多站点范围的变量 为了在其他较少的文件中使用这些变量,我目前将其放在每个文件的顶部:Css 在Rails 3中导入较少的变量,css,ruby-on-rails-3,asset-pipeline,less,Css,Ruby On Rails 3,Asset Pipeline,Less,我的资产文件夹中有一个global.less文件,我在其中定义了许多站点范围的变量 为了在其他较少的文件中使用这些变量,我目前将其放在每个文件的顶部: @import 'global'; 这加载一切都很好,但现在我有一个副本的全局加载到每一个更少的文件。我想知道是否有办法在项目中只编写一次导入,让其他较少的文件能够访问它?要实现这一点,您只需要做两件小事 将application.css文件重命名为application.less或application.css.less,使其成为.less文
@import 'global';
这加载一切都很好,但现在我有一个副本的全局加载到每一个更少的文件。我想知道是否有办法在项目中只编写一次导入,让其他较少的文件能够访问它?要实现这一点,您只需要做两件小事
application.css
文件重命名为application.less
或application.css.less
,使其成为.less文件require\u树。
sprocket指令,该指令将自己导入样式表目录中的文件,从而删除定义顺序的功能// in global.less
@foo: #FFFFFF;
// in foo.less
.foo {
background-color: @foo;
}
// and finally in application.less
@import 'global';
@import 'foo';
但我发现这种做法存在一个问题。很多时候,我们需要使用“需要树”和“需要自我”。在本例中,这些方法将不可用,因为您使用了.sass文件而不是.css文件。然后需要在每个操作样式表中创建一个“@import”。否。这里的要点是,这种方法抛弃了
require_tree
,而支持less自己的@import
功能,它创建了一个全局名称空间,使mixin和变量保持可用,而sprockets的require
则不需要。请注意,此问题适用于less,而不是您提到的sass,但相同的原则适用于两者。请参阅关于sass的github上的问题。