2013-06-03 2 views
1

Я создал mixin, который использует метод argb() (для градиента фильтра IE). Этот mixin принимает параметр, используемый для установки имени хорошей переменной для выбора среди список переменных. Эти переменные хранят цвета гекса.LessCSS: argb() не работает с переменной с динамическим именем

@var_foo: #FFFFFF; 
@var_bar: #000000; 

.setColor(@colorName){ 
    @colorVar: ~'@{[email protected]{colorName}}'; 
    @colorArgb: argb(@colorVar); 
} 

Эта причина меня ошибка: ошибка оценки функции argb: Объект # не имеет метод «toARGB»

Кажется, он не любит функции побега. Когда я заменяю @colorVar прямо на hardcoded @var_foo, он работает. Я делаю что-то неправильно, или метод argb() нуждается в чем-то особенном?

Спасибо

ответ

1

Вы вызываете сконструированное имя переменного ошибочно.

Вы должны использовать @@, чтобы позвонить по номеру variable from a variable name.

МИНУС:

@var_foo: #FFFFFF; 
@var_bar: #000000; 

.setColor(@colorName) { 
    @colorVar: '[email protected]{colorName}'; 
    @colorArgb: argb(@@colorVar); 
    color: @colorArgb; 
} 

.setColor(bar); 

возвратит этот CSS:

color: #ff000000; 
+0

Отлично! Много thx – Tinostarn

+0

Рад помочь!^_^ –

1

Я согласен с ответом Мартина, насколько это идет, но мне кажется, что вы хотите две переменные набор с цветовыми свойствами, и его решение оставляет основную цветовую переменную в виде строки. Поэтому я рекомендую установить исходную переменную getter, чтобы затем использовать для установки двух цветовых переменных. Вот пример (не зная, как вы используете цвета, я просто собираю что-то вместе здесь), маловероятно, что вы будете использовать формат файла IE для background-color, но вы получите идею):

МЕНЬШЕ

@var_foo: #FFFFFF; 
@var_bar: #000000; 

.setColor(@colorName) { 
    @getColor: '[email protected]{colorName}'; 
    @colorVar: @@getColor; 
    @colorArgb: argb(@@getColor); 
} 

.test { 
    .setColor(foo); 
    color: @colorVar; 
    background-color: @colorArgb; 
} 

.test2 { 
    .setColor(bar); 
    color: @colorVar; 
    background-color: @colorArgb; 
} 

CSS Выходной

.test { 
    color: #ffffff; 
    background-color: #ffffffff; 
} 
.test2 { 
    color: #000000; 
    background-color: #ff000000; 
} 
+0

У вас есть точка, я использовал '@ colorVar' для хранения имени переменной (как переменной-получателя). Я просто не думал, что существует необходимость в определении другой переменной, которая содержит исходный цвет, поскольку вы можете получить цвет непосредственно из переменных '@ var_foo' и' @ var_bar', вызвав '@@ colorVar', и, конечно же, вы может использовать его сейчас в любых других переменных и цветовых операциях, зависит от того, что именно вы хотите использовать для^_ ^ –

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