9

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

4

1 回答 1

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

然后设置你的变量(同样,在 config.rb 文件中):

sass_options = {:custom => { :custom_colors => {"main" => "#ff1122"} } }

然后在您的 scss 文件中,您可以使用以下custom_color()功能:

body {
  background-color: custom_color(main);
}

您还可以编写另一个自定义函数,通过传入字符串返回其他类型,例如字体大小、尺寸等,然后返回适当的类实例。

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

因此,如果您的 sass_options 是:

sass_options = {:custom => { :custom_colors => {"main" => ENV["MAIN_COLOR"]} } }

你运行指南针:

MAIN_COLOR=#dd1122 bundle exec compass compile

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

于 2013-01-24T18:55:34.270 回答