Создать список переменных в LESS для вариантов цветов на основе базового цвета
В нашем проекте мы используем список переменных LESS. В этом списке у нас есть несколько цветов. Например это:
@color-gray: #B9B9BA;
@color-gray-light: lighten(@color-gray, 10%);
@color-gray-lighter: lighten(@color-gray, 20%);
@color-gray-lightest: lighten(@color-gray, 25%);
@color-gray-dark: darken(@color-gray, 10%);
@color-gray-darker: darken(@color-gray, 20%);
@color-gray-darkest: darken(@color-gray, 25%);
Помимо этого серого у нас есть и другие цвета. Поэтому я хотел бы сделать миксин, который составляет этот список переменных для других цветов.
Первый цвет определен. Например: @color-purple: #915E9F; и я хочу, чтобы микширование создало оставшиеся переменные, основываясь исключительно на этой переменной.
// Color - Purple
@color-purple: #915E9F;
// Color variants generated by LESS for purple
@color-purple-light: lighten(@color-purple, 10%);
@color-purple-lighter: lighten(@color-purple, 20%);
@color-purple-lightest: lighten(@color-purple, 25%);
@color-purple-dark: darken(@color-purple, 10%);
@color-purple-darker: darken(@color-purple, 20%);
@color-purple-darkest: darken(@color-purple, 25%);
Эти переменные позже будут использоваться во всем приложении для создания стиля для кнопок, заголовков и т. Д. У меня уже есть микширование, которое создает эти кнопки, заголовки, варианты.
2 ответа
Это ты хочешь сделать?
@color-gray: #B9B9BA;
.colorset(@color) {
@color-light: lighten(@color, 10%);
@color-lighter: lighten(@color, 20%);
@color-lightest: lighten(@color, 25%);
@color-dark: darken(@color, 10%);
@color-darker: darken(@color, 20%);
@color-darkest: darken(@color, 25%);
}
.class{
.colorset(@color-gray);
color:@color-light;
}
Насколько я знаю, вы не можете создавать динамические переменные в mixin. Но если вы хотите переосмыслить свою логику, вы можете сделать что-то вроде этого:
.color-light (@colorItem) {
@color-light: lighten(@colorItem, 10%);
}
.color-lighter (@colorItem) {
@color-lighter: lighten(@colorItem, 20%);
}
.color-lightest (@colorItem) {
@color-lightest: lighten(@colorItem, 25%);
}
.color-dark (@colorItem) {
@color-dark: darken(@colorItem, 10%);
}
.color-darker (@colorItem) {
@color-darker: darken(@colorItem, 20%);
}
.color-darkest (@colorItem) {
@color-darkest: darken(@colorItem, 25%);
}
.class{
.color-light(@color-gray);
color:@color-light;
}