Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scss文件中使用config.rb中定义的变量_Css_Ruby_Compass Sass_Sass - Fatal编程技术网

在scss文件中使用config.rb中定义的变量

在scss文件中使用config.rb中定义的变量,css,ruby,compass-sass,sass,Css,Ruby,Compass Sass,Sass,是否可以在整个SCSS文件中使用compass项目的config.rb文件中定义的变量?在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)} S

是否可以在整个SCSS文件中使用compass项目的config.rb文件中定义的变量?

在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
然后设置变量(同样,在config.rb文件中):

然后在您的scss文件中,您可以使用
custom\u color()
函数:

body {
  background-color: custom_color(main);
}
您还可以编写另一个自定义函数,通过传入字符串,然后返回相应的类实例来返回其他类型,如字体大小、度量值等

有趣的是,这将允许您将环境变量传递到compass命令行,这将生成不同的结果

因此,如果您选择以下选项:

sass_options = {:custom => { :custom_colors => {"main" => ENV["MAIN_COLOR"]} } }
你运行指南针:

MAIN_COLOR=#dd1122 bundle exec compass compile

然后,您在命令行中传递的任何颜色都将出现在生成的css中。如果您正在使用Heroku,您可以
Heroku配置:设置MAIN_COLOR=#224411
,并能够使用相同的scss文件在每个应用程序上设置模板颜色。

,与在导入的基本Sass文件中定义颜色相比,这有什么好处?您可以将环境变量传入compass,然后根据不同的调色板生成一组不同的css文件?Sass_选项={:自定义=>{:自定义颜色=>{“main”=>“#ff1122”}}的含义和用途是什么?
MAIN_COLOR=#dd1122 bundle exec compass compile