如何使颜色名称在 Stylus 中不自动转换为十六进制值?

How to make a color name not automatically convert to a hex value in Stylus?

我正在使用手写笔预处理器迭代 for 循环。我需要颜色 class 名称和颜色值,我得到的十六进制值很好,但我的 class 名称并不理想。

$colors = red blue green orange;
for item in $colors {
    .{"" + item} {
        color: item;
    }
}

我编译了这个:

.#f00 {
  color: #f00;
}
.#00f {
  color: #00f;
}
.#008000 {
  color: #008000;
}
.#ffa500 {
  color: #ffa500;
}

但我的预期结果是:

.red {
   color: #f00; // or red
}
.blue { 
   color: #00F // or blue
}
// .. etc

我可以想象有一个保留名称的功能。

感谢任何帮助。

如果您可以将原始颜色列表转换为一组字符串,则此

$colors = 'red' 'blue' 'green' 'orange';
for item in $colors {
    .{item} {
        color: convert(item);
    }
}

产量

.red {
  color: #f00;
}
.blue {
  color: #00f;
}
.green {
  color: #008000;
}
.orange {
  color: #ffa500;
}

如果您将 convert 更改为 unquote,十六进制值将替换为您在列表中提供的名称。