我试图生成一个相当自动化的系统来定义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