2014-10-20 65 views
0

我正在嘗試使用Stylus和筆尖擴展創建線性漸變。如果我通過在不同的參數一切正常:傳遞列表作爲函數參數在Stylus

background linear-gradient(90deg, #000 0%, #FFF 10%, #000 20%)

不過,我需要從一個循環內建立我的梯度。我正在使用一個變量,並在其上添加更多值:

// pseudo-code 

grid = 90deg 

for percent in percents 
    push(grid, #000 percent) 

background linear-gradient(grid) 

我遇到了問題。線性漸變mixin認爲整個列表是一個參數,而它是 期望單獨的顏色停止。有什麼辦法可以在Stylus中使用一個列表並將它作爲多個參數傳遞給函數 ?

回答

1
linear-gradient() 
    unquote('linear-gradient(' + join(', ', arguments) + ')') 

percents = 10% 20% 30% 

grid = 90deg 

for percent in percents 
    push(grid, #000 percent) 

body 
    background linear-gradient(grid) 

說明

嗯,基本上,有兩種類型的手寫清單。第一個表達式,它是一個沒有逗號的列表(例如1 2 3),第二個表用逗號(例如Helvetica, Arial, sans-serif)。第二種類型的列表只是第一種,但isList內部標誌(在編譯階段添加了逗號)。

函數調用的參數它是第一個類型的列表。目前沒有辦法將沒有逗號的列表轉換爲帶有逗號的列表,而沒有循環遍歷該列表的項目。所以,我們需要從字面上輸出linear-gradient(<list of arguments with commas>),要做到這一點,我們正在使用unquotejoin內置函數。

+0

請提供一些額外的說明以及您的答案,因爲放置代碼對教育沒有幫助。 – Aibrean 2014-10-21 13:19:39

+0

這工作!我同意,如果其他人正在尋找這個答案,也許會在編輯時加入更多解釋。 (unquote功能在這裏是關鍵。) – jhummel 2014-10-21 14:15:04

+0

添加了解釋。 – Panya 2014-10-21 15:09:54