2011-09-13 79 views

回答

3

我相信,這是不可能的。 Sass在部署時得到編譯(在Rails 3.1中),之後它是一個靜態文件。這也沒有任何意義。 css文件應該獨立於用戶並且可以長時間緩存。

如果用戶選擇了首選顏色,爲什麼不在樣式中插入樣式標籤並覆蓋在CSS中定義的默認樣式?

0

這是可能的,但它涉及通過Sass黑客攻擊並深入其中。更好的方式就像iGel所說的那樣,根據用戶的喜好創建不同的「主題」並將其包含在身體中。

假設你有一個main.css的一些主題化的顏色(比如不同的身體背景取決於用戶的選擇)

= stylesheet_include_tag 'main' 
= stylesheet_include_tag "#{@user.color_preferred}" 

那麼你有一些顏色預製像blue.sass,red.sass, green.sass等

它很容易產生這些,因爲你可以像你在你的例子中那樣使用一個變量,除了你必須重現它以支持不同的顏色。

1

是的。您可以通過擴展來實現。只需創建一個Ruby文件,添加該位,然後將其加載到你的腳本環境(即/配置/初始化/):

module Sass::Script::Functions 
    def var(name) 
    assert_type name, :String, :name 
    @environment.var(name.value) 
    end 

    declare :var, :args => [:string] 
end 

然後,你可以做這樣的東西:

$button-primary-bg: #000; 
$button-secondary-bg: #123; 
$button-tertiary-bg: #abc; 

$button-names: (primary, secondary); 

@each $name in $names { 
    .button-#{$name} { background: var("button-#{$name}-bg"); } 
} 
相關問題