如何在Config.rb中为SCSS文件[COMPASS项目]
定义SCSS变量我的用例
在Config.rb文件中类似
a = true
在style.scss中,我喜欢使用像
这样的变量@if a == true{
background: #fff;
}
@else {
background: #000;
}
其中一个解决方案 http://worldhousefinder.com/?p=124141
但它对我不起作用。
答案 0 :(得分:1)
你不能/不应该这样做。您将预编译您的资产,因此无法动态适应变化的变量。这可能适用于你的config.rb变量,但这是一个糟糕的模式,你每次更改变量时都必须重新编译你的资产,如果你在sass中检查,这就会失败。
更简单的方法是在元素(正文)上添加类.active
.inactive
。或者根据登录的用户输出内联css,例如自定义颜色等。
你想做什么?这听起来像你要做的事情来检查你是否在生产或开发?在这种情况下,您可以执行以下操作:
<body class='<%= "development" if Rails.env == 'development' %>'>
甚至
<body <%= "style='background-color: red;'" if Rails.env == 'development' %>
你永远不需要在你的css和javascript中使用ruby,如果你发现自己这么做,你可能会以错误的方式接近它。至少这是我在多次尝试这么做之后发现的。
P.S。 data-attributes是一种将变量等传递给javascript的非常有效的方法
答案 1 :(得分:0)
如果你真的试图将外部变量传递给SASS,你必须明白它在编译CSS时不知道你的配置文件。 According to Nathan Weizenbaum(Haml的主要开发者之一),最好的方法是创建自定义 user-defined functions 。
如果你走那条路(再次引用内森):
您需要确保自己的样式表 每当数据发生变化时都会重新生成。您可以通过致电来完成此操作
Sass::Plugin.force_update_stylesheets
。