我試圖生成一個相當自動化的系統來定義SASS中的顏色。我有一個用十六進制值定義的顏色列表(如:$color--deep-ocean: #123143;
)和全局的$colors:();
定義。在SASS中生成動態彩色地圖
然後我想動態地創建它們的RGBA值,並且給定變量插值不是SASS中的一個選項,我試過我的手在地圖上。
的想法是養活set-color
功能的名稱和顏色來填充我$colors
變量,map-merge
,我可以再與get-color
檢索。這裏下面是我的兩個函數定義和如何我試圖使用它們:
@function color-set($name, $hex) {
$submap: (hex: $hex);
@for $o from 0 to 20 { // Going in increments of 5
$percentage-decimal: $o*0.05;
$percentage: $o*5;
$submap: map-merge($submap, ($percentage: rgba($hex, $percentage-decimal)));
}
$colors: map-merge($colors, ($name: $submap));
/* We should then have a map that looks like this:
$colors: (colorname: (
hex: #000000,
0: rgba(0,0,0,0),
5: rgba(0,0,0,.05),
// and so on…
100: rgba(0,0,0,1)
)
)
… right? */
}
@function color-get($name, $opacity: hex) {
@if $opacity != hex { // Returns RGBA value
@return map-get(map-get($colors,$name), $opacity);
}
@else { // Returns hexidecimal value
@return map-get(map-get($colors,$name), hex);
}
}
請讓我知道,如果我的功能是混亂!我會盡力評論他們。
這是我正在試圖定義一種顏色(的_variables.scss
部分):
color-set(bkgrnd, $color--deep-ocean);
而這裏的如何,我想用我的色彩:
body { // These colours have been defined, too …supposedly
background-color: color-get(bkgrnd, 80);
color: color-get(white);
}
這裏是錯誤我得到_variables.scss:
「... ackground color」之後無效的CSS:預期1選擇器或at-rule,是「color-set(bkgrnd,$」
所以我覺得我錯過了一些東西。我已經把腦袋纏繞了四個小時,而且我瘋了。這可能是超級簡單的東西,但我似乎無法弄清楚。我隨便使用SASS,所以我可能不知道一些語法問題,但如果任何人有關於如何解決這個問題的線索,我會非常感激。
祝您有美好的一天,感謝您花時間閱讀我的文章!
的問候, 克里斯
PS:我與支架SASS插件支架編譯此,即使有這些信息是相關的。
我和類似的工作,檢查出來,讓我知道,如果它http://codepen.io/anon/pen/JWZdZK – kurenn
@kurenn當你的代碼沒有按」 t和我的工作方式一樣,它確實幫助我解決了一些問題,所以謝謝! – chriskirknielsen
是的,我可以想象,但只要你幫助你一點.... – kurenn