2015-04-16 5 views
2

я пытаюсь определить цвет с помощью стилуса API .define (имя, значение):как .define() цвет с пером

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, Я не вижу никакой ссылки на тип цвет.

ответ

4

.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 будет работать для шестнадцатеричных строк.

+0

приятно, но мне просто интересно, есть ли способ (публичный API) вызывать парсер правил/значений для моей цветовой строки? –

+0

новый stylus.Parser ('# 123') выглядит многообещающе ... –

+0

затем: .define ('mycolor', новый стилус.Parser ('# 123'). Peek(). Val) –

Смежные вопросы