2014-04-22 120 views
1

如何Config.rb定義SCSS變量SCSS文件[COMPASS項目]創建SCSS變量SCSS文件

我的用例

在Config.rb文件的東西像

a = true 

在style.scss我喜歡使用的變量等

@if a == true{ 
    background: #fff; 
} 
@else { 
    background: #000; 
} 

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

但它沒有爲我工作。

+0

可能重複的[如何在css文件中編寫ruby代碼](http://stackoverflow.com/questions/3301195/how-to-write-ruby-code-in-css-file) –

回答

1

你不能/不應該這樣做。您將預編譯您的資產,因此無法動態適應變化的變量。這可能適用於你的config.rb變量,但是這是一種不好的模式,每次你改變變量時你都必須重新編譯你的資源,這樣做會影響你在sass中進行其他檢查的目的。

一個更簡單的方法是在您的元素(body)上添加一個類.active.inactive。或者在你的腦海中輸出內聯css,根據用戶的喜好自定義顏色等等。

你想做什麼?這聽起來像是你想要檢查你是在生產還是在開發中?在這種情況下,你可以這樣做:

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

甚至

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

你應該從來不需要使用Ruby在你的CSS和JavaScript,如果你發現自己在做它,你很可能接近它的錯誤的方法。至少這是我在多次嘗試做得很好之後發現的。

p.s.數據屬性是一種非常有效的傳遞變量等的方法javascript

+0

Thx for你的回覆,是的,我想重新生成樣式表。我需要用一個scss文件來創建** RTL和LTR **樣式表。 – Vadivelmsc

0

首先,你看過variablesmixins

如果你真的想把外部變量傳遞給SASS,你必須明白它在編譯CSS時並不知道你的配置文件。 According to Nathan Weizenbaum(Haml的主要開發者之一),最好的方法是創建自定義的user-defined functions

如果你走這條路(再次引用森):

你要確保你的樣式表 得到再生每當數據更改。您可以致電 Sass::Plugin.force_update_stylesheets

+0

Thx爲您的答覆,是的,我想重新生成樣式表。我需要用一個scss文件來創建** RTL和LTR **樣式表。 – Vadivelmsc