如何使用手写笔.define() 一种颜色
how to .define() a color with stylus
我尝试使用手写笔定义颜色 API .define(name, value):
var stylus = require('stylus');
stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', '#123')
.render(function(err, css) {
console.log(err);
console.log(css);
});
错误:
TypeError: expected rgba or hsla, but got string:'#123'
在 documentation 中,我看不到任何对 color 类型的引用。
.define('mycolor', '#123')
总是定义一个字符串,您可能已经发现了。即使你说.define('mycolor', 'rgba(0,0,0,0)')
,你也会得到同样的错误。
你需要做的是定义一个rgba
或hsla
节点,你可以这样做:
stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', new stylus.nodes.RGBA(1, 0x11, 0x22, 0x33))
遗憾的是,我一直无法找到直接从颜色字符串定义颜色节点的简单方法。
不过,new stylus.Parser('#123').lexer.color().val
或 new stylus.Parser('#123').peek().val
将适用于十六进制字符串。
我尝试使用手写笔定义颜色 API .define(name, value):
var stylus = require('stylus');
stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', '#123')
.render(function(err, css) {
console.log(err);
console.log(css);
});
错误:
TypeError: expected rgba or hsla, but got string:'#123'
在 documentation 中,我看不到任何对 color 类型的引用。
.define('mycolor', '#123')
总是定义一个字符串,您可能已经发现了。即使你说.define('mycolor', 'rgba(0,0,0,0)')
,你也会得到同样的错误。
你需要做的是定义一个rgba
或hsla
节点,你可以这样做:
stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', new stylus.nodes.RGBA(1, 0x11, 0x22, 0x33))
遗憾的是,我一直无法找到直接从颜色字符串定义颜色节点的简单方法。
不过,new stylus.Parser('#123').lexer.color().val
或 new stylus.Parser('#123').peek().val
将适用于十六进制字符串。