nop*_*ole 7 ruby-on-rails sass
在Rails项目中,有一个变量来说明我们希望Rails应用程序运行的站点 - 例如,对于汽车或船只,如果它是汽车站点或船只应该有不同的CSS精灵站点(站点徽标位于精灵内).将这个变量的值传递给.sass文件中的"cars"或"boats"是什么好方法,以便.sass文件将使用sprite public/images/sprites/sprite-cars.png或public/images/sprites/sprite-boats.png?
一种可能的方法是在init文件中使用它 config/initializers
Sass::Plugin.options[:load_paths] = ["#{RAILS_ROOT}/app/views/templates/#{SITE_NAME}/"]
Run Code Online (Sandbox Code Playgroud)
并在里面app/views/templates/cars/放一个_site_variables.sass并添加一条线
@import "site_variables"
Run Code Online (Sandbox Code Playgroud)
在主.sass文件中.在_site_variables.sass,只是
$site_sprite_path: '/images/sprites/sprites-cars.png'
Run Code Online (Sandbox Code Playgroud)
这很有效,但传递一个变量需要做很多工作.有更简单的方法吗?
Sass 文档描述了如何添加自定义函数并提到:custom自定义配置变量的选项。
例如,假设您想要一个函数来显示当前年份。制作一个lib/sass_year.rb包含以下内容的文件:
require 'sass'
require 'sass/script'
module Sass::Script::Functions
def year
Sass::Script::Value::String.new(Sass::Plugin.options[:custom][:year])
end
end
Run Code Online (Sandbox Code Playgroud)
然后,在像 一样的地方environment.rb,按如下方式包含和配置它:
require Rails.root+'lib/sass_year'
require 'sass/plugin'
Sass::Plugin.options[:custom] ||= {}
Sass::Plugin.options[:custom][:year] = Time.now.year.to_s
Run Code Online (Sandbox Code Playgroud)
现在您可以在 Sass 代码中使用该函数,如下所示:
div#copyright
content: "© 2001–#{year()} XYZ Corporation"
Run Code Online (Sandbox Code Playgroud)
您可以访问环境变量或其他配置数据,而不是当前年份。请注意,如果没有 ,to_s您将得到一个损坏的字符串,并且在调试时确保定期清除tmp/cache以强制重新生成样式表。
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |