2011-04-08 171 views
8

可以在編譯時設置sass變量嗎?我基本上要做到這一點:SASS:在編譯時設置變量


$color: red !default; 
div#head { 

    background-color: $color; 

}

當我編譯爲CSS我想設置$顏色爲「藍色」(最好是在命令行)。有沒有人能夠做到這一點?

謝謝, 克里斯

+0

我不太確定我理解你的問題,你想在命令行中設置這個變量?有點像sass風格的壓縮 - watch scss:css --vars $ color = blue;''< - 這一行不行,我只是用它來說明我的問題' – Jannis 2011-04-08 20:57:21

+0

是的,我想做什麼! – Kenzic 2011-04-08 23:22:34

+1

在這種情況下,我認爲現在不可能。抱歉,我無法提供更多幫助。我能想象你能做的唯一事情就是創建一個自定義的bash/ruby​​腳本,它將一個變量添加到一個文件中,然後將一堆scss文件編譯成css我認爲。 – Jannis 2011-04-09 06:19:24

回答

6

我發現這在他們的常見問題http://sass-lang.com/docs/yardoc/file.FAQ.html

如果你只是想每次被編譯,就像使用--watch時間一些變量傳遞到CSS,你可以使用Sass functions定義Ruby腳本,甚至查詢數據庫。但是代碼將僅被編譯一次,並靜態提供。

但是如果你需要在不同的選項每個請求重新編譯,

可以使用Sass::Engine渲染代碼,使用:custom option 在數據傳遞can be accessed從薩斯功能

不過似乎並不推薦。可能出於性能原因。

6

的命令行選項的替代是創建其他文件爲變量分配數值。

假設您的代碼位於名爲'style.scss'的文件中。 設置$顏色爲「藍色」,創建一個文件,如:

$color: blue; 
@import "style"; 

,它的名字,例如「blue.scss」。 然後用下面的方法編譯它。

sass blue.scss:style.css 

當你想另一個值賦給變量,使名爲 「green.scss」 就像另一個文件:

$color: green; 
@import "style"; 

然後用

sass green.scss:anotherstyle.css 

這是困擾編譯有些但能夠在編譯時決定變量的值。

+1

Don真的認爲這不會起作用。我的示例很簡單,用於演示目的,但我想設置多個變量。 – Kenzic 2012-03-07 21:12:55

+1

當然,您可以將多個變量放入導入文件中。 您是否意味着您需要生成單個文件,其中包含{var1:val1A,var2:val2A,...}到fileA.css,{var1:val1B,var2:val2B,...}等多個值組合到fileB .css,fileC.css fileD.css ...? 如果是這樣,我的回答太糟糕了,不能幫助。 但是當你想從一個scss文件生成彼此差異很小的css文件時,它仍然很有用。 例如大多數CSS樣式是共享的,需要進行一些調整以適應各種設備(如PC /平板電腦/智能手機)的風格。它只需要3個文件來定義一組變量。 – reppets 2012-03-08 15:47:11

+0

或者如果你的意思是你想嘗試許多特殊值,編輯導入文件和運行sass --watch選項將是幫助。 – reppets 2012-03-08 15:48:34