【发布时间】:2018-11-17 03:19:41
【问题描述】:
TL;DR
可以使用 SASS 函数生成 SASS 变量吗?我的意图是采用一小部分颜色并将它们加工成这些颜色的多种色调。
问题:
注意我正在使用 https://github.com/at-import/color-schemer 进行颜色功能。
我有以下变量:
$root-color: hsl(10, 85%, 45%);
$red: $root-color;
$vermilion: ryb-adjust-hue($red, 30);
$orange: ryb-adjust-hue($red, 60);
$amber: ryb-adjust-hue($red, 90);
$yellow: ryb-adjust-hue($red, 120);
$chartreuse: ryb-adjust-hue($red, 150);
$green: ryb-adjust-hue($red, 180);
$teal: ryb-adjust-hue($red, 210);
$blue: ryb-adjust-hue($red, 240);
$violet: ryb-adjust-hue($red, 270);
$purple: ryb-adjust-hue($red, 300);
$magenta: ryb-adjust-hue($red, 330);
对于每种颜色,我正在尝试生成以下输出($red 如下所示):
$red-10: $red;
$red-01: shade($red-10, 90);
$red-02: shade($red-10, 80);
$red-03: shade($red-10, 70);
$red-04: shade($red-10, 60);
$red-05: shade($red-10, 50);
$red-06: shade($red-10, 40);
$red-07: shade($red-10, 30);
$red-08: shade($red-10, 20);
$red-09: shade($red-10, 10);
$red-11: tint($red-10, 10);
$red-12: tint($red-10, 20);
$red-13: tint($red-10, 30);
$red-14: tint($red-10, 40);
$red-15: tint($red-10, 50);
$red-16: tint($red-10, 60);
$red-17: tint($red-10, 70);
$red-18: tint($red-10, 80);
$red-19: tint($red-10, 90);
我可以归结为以下几点:
对于每个$color:
$red-10: $red;对于 1 - 9
($1):生成变量$#{$color}-0$1: shade($red-10, (100 - ($1 * 10)))对于 1 - 9
($1):生成变量$#{$color}-($1 * 10): tint($red-10, ($1 * 10))
显然我得到一个错误:
Error: Invalid CSS after "...m 1 through 9 {": expected 1 selector or at-rule, was "#{$color}-$1: shade"
我已经研究过使用列表和@append,但由于我有 x 种颜色,我认为我必须创建动态列表?这可能吗?
我知道我既使用变量来创建变量 ($#{$color}) 并尝试在循环中输出函数,但我不确定这是否可以使用 SASS。
如果没有,这种事情有更好的工作流程吗?
【问题讨论】: