是否可以在整个 SCSS 文件中使用在 compass 项目的 config.rb 文件中定义的变量?
问问题
3949 次
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 回答