2013-09-16 188 views
1

正如你可以在這裏看到的:http://codepen.io/MyXoToD/pen/alkmL 我想將一些JavaScript函數轉換成SASS。一切工作正常,但這一功能...SASS random()總是返回相同的值,爲什麼?

我想轉換此:

var pallete = Math.floor(Math.random() * 210); 

$("article h2").each(function(i) { 
    var hue = pallete + (i * 15); 
    var css = 'background:hsl(' + hue + ',85%,70%); color:hsl(' + hue + ',45%,55%);'; 
    $(this).attr("style", css); 
}); 

弄成這個樣子:

@for $i from 1 through $articles { 
    &:nth-child(#{$i}) { 
    $random: random(210); 
    $hue: $random + ($i * 15); 
    background-color: hsl($hue, 85%, 70%); 
    color: hsl($hue, 45%, 55%); 
    } 
} 

我在這種情況下的問題是,random(210)總是返回每個頁面加載的值相同。是否有可能通過@for從每次運行中隨機獲得不同的值?

+1

請注意'random()'目前不是Sass或Compass的函數,它是CodePen特有的(參見https://github.com/chriseppstein/compass/issues/1154和https:// github.com/nex3/sass/pull/904) – cimmanon

回答

2

不,這在任何正確的生產環境下都是不可能的。瀏覽器只能理解CSS,因此SASS和幾乎所有其他CSS預處理器通常只運行一次(在服務器上),而不是在每個頁面加載的客戶端上運行。

雖然例如LESS有一個客戶端編譯器(less.js),使用它會減慢頁面加載過程,並且通常只適合開發。如果您真的想要動態顏色,請考慮使用JavaScript構建相關CSS或保留舊代碼。

+0

不正確。你可以在客戶端編譯SASS,LESS等。這當然是個壞主意,但仍然有可能。 –

+0

@dragoste注意**這個詞通常** – iConnor

+0

@Pinocchio請注意ThiefMaster的表達「那是不可能的。」 –

相關問題