ale*_*ias 8 css ruby sass compass-sass
是否可以在整个SCSS文件中使用罗盘项目的config.rb文件中定义的变量?
ste*_*tef 16
在config.rb文件中添加自定义模块:
module Sass::Script::Functions
def custom_color(value)
rgb = options[:custom][:custom_colors][value.to_s].scan(/^#?(..?)(..?)(..?)$/).first.map {|a| a.ljust(2, a).to_i(16)}
Sass::Script::Color.new(rgb)
end
end
Run Code Online (Sandbox Code Playgroud)
然后设置变量(再次,在config.rb文件中):
sass_options = {:custom => { :custom_colors => {"main" => "#ff1122"} } }
Run Code Online (Sandbox Code Playgroud)
然后在你的scss文件中,你可以使用这个custom_color()函数:
body {
background-color: custom_color(main);
}
Run Code Online (Sandbox Code Playgroud)
您还可以编写另一个自定义函数,通过传入字符串,然后返回相应的类实例来返回其他类型,如字体大小,度量等.
有趣的是,这将允许您将环境变量传递到罗盘命令行,这将产生不同的结果.
所以如果你sass_options是:
sass_options = {:custom => { :custom_colors => {"main" => ENV["MAIN_COLOR"]} } }
Run Code Online (Sandbox Code Playgroud)
你运行指南针:
MAIN_COLOR=#dd1122 bundle exec compass compile
Run Code Online (Sandbox Code Playgroud)
然后,在命令行中传入的任何颜色都将出现在生成的css中.如果你正在使用Heroku,你可以heroku config:set MAIN_COLOR=#224411并且能够使用相同的scss文件在每个应用程序的基础上设置模板颜色.