2016-09-12 15 views
3

Я пытаюсь создать простой mixin в LESS для разных цветов, которые я буду использовать для веб-сайта.Использовать аргумент mixin для создания имени класса в LESS

Я хочу использовать mixinargument как часть названия класса.

@green: #5FBEAA; // my color variable 

.text-color(@color) { 
    .text-{@color} { 
     color: @color; 
    } 
} 

.text-color(@green); 

выход я получаю это:

.text-#5FBEAA { 
    color:#5FBEAA 
} 

Что я хочу:

.text-green { 
    color:#5FBEAA 
} 
+0

Как вы это делаете в SASS или стилусом? – blonfu

+0

@blonfu Я попробовал его в SASS/Stylus. это не работает так. моя ошибка. Я использовал это что-то еще. здесь было неправильно. –

+1

ОК, мне показалось странным, что вы можете получить доступ к имени переменной таким образом. – blonfu

ответ

5

Я думаю, что у меня есть решение, используя Variable Names.

Менее

@green: #5FBEAA; 

.text-color(@colorname) { 
    @color: ~"@{colorname}"; 
    [email protected]{color}{ 
    color: @@color; 
    } 
} 

.text-color(green); 

Выход

.text-green { 
    color: #5FBEAA; 
} 
+0

Красивый подход. Можете ли вы объяснить мне, почему нам нужно присваивать значение переменной '@ color' с' ~ @ {colorname}; 'даже если я пишу так:' @colorname; ', itl работает. Есть ли веская причина? –

+0

Можно заменить '~" зеленый "' на 'зеленый' в вызове и выглядит лучше, я забыл удалить его после тестов, которые я сделал. Я использую '~ @ {colorname}', чтобы получить 'green' как строку. Я отредактировал ответ – blonfu

+0

да, тогда это имеет смысл. Это сработало Спасибо :) –

2

Я не думаю, что его можно. Ближайшим решением для этого будет использование дополнительной переменной.

@green: #5FBEAA; 
.text-color(@name,@color) { 
    [email protected]{name} { 
     color: @color; 
    } 
} 
.text-color(green,@green); 

Это будет компилировать

.text-green { 
    color: #5FBEAA; 
} 

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

  • Нет связанных вопросов^_^