【问题标题】:Creating scss variable in config.rb for scss files在 config.rb 中为 scss 文件创建 scss 变量
【发布时间】:2014-06-06 14:28:21
【问题描述】:

如何在 Config.rb 中为 SCSS 文件定义一个 SCSS 变量[COMPASS 项目]

我的用例

在 Config.rb 文件中类似

a = true

在 style.scss 中我喜欢使用像

这样的变量
@if a == true{
     background: #fff;
} 
@else {
   background: #000;
}

解决方案之一 http://worldhousefinder.com/?p=124141

但它对我不起作用。

【问题讨论】:

标签: ruby ruby-on-rails-3 sass compass-sass


【解决方案1】:

你不能/不应该这样做。您将预编译您的资产,因此无法动态适应不断变化的变量。这可能适用于您的 config.rb 变量,但这是一种不好的模式,并且每次更改变量时都必须重新编译资产,这违背了执行 if else 检查您的 sass 的目的。

一个更简单的方法是在你的元素(body)上添加一个类.active.inactive。或者根据已登录的用户在您的脑海中输出自定义颜色等内容的内联 css。

你想做什么?这听起来像是您要检查您是在生产还是开发中?在这种情况下,您可以执行以下操作:

<body class='<%= "development" if Rails.env == 'development' %>'>

甚至

<body <%= "style='background-color: red;'" if Rails.env == 'development' %>

你永远不需要在你的 css 和 javascript 中使用 ruby​​,如果你发现自己这样做了,那么你可能以错误的方式接近它。至少这是我在多次尝试做得很好之后发现的。

附言数据属性是将变量等传递给javascript的一种非常有效的方法

【讨论】:

  • 感谢您的回复,是的,我想重新生成样式表。我需要这个来创建带有单个 scss 文件的 **RTL 和 LTR ** 样式表。
【解决方案2】:

首先,你看过variablesmixins吗?

如果您真的想将外部变量传递给 SASS,您必须了解它在编译 CSS 时并不知道您的配置文件。 According to Nathan Weizenbaum(Haml 的主要开发者之一),最好的方法是创建自定义 user-defined functions

如果你走那条路(再次引用内森的话):

您需要确保您的样式表 每当数据更改时都会重新生成。您可以致电 Sass::Plugin.force_update_stylesheets.

【讨论】:

  • 感谢您的回复,是的,我想重新生成样式表。我需要这个来创建带有单个 scss 文件的 **RTL 和 LTR ** 样式表。
猜你喜欢
  • 2013-01-08
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2018-09-23
相关资源
最近更新 更多