Подтвердить что ты не робот

Множество функций внутри строки с LESS

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

Я использую LESS с LESSHat mixins для создания темы на данный момент. Я определил несколько цветов в качестве переменных, и в настоящее время я пытаюсь определить градиент, используя LESSHat .gradient() mixin. Проблема в том, что mixin принимает строку как один аргумент, а не ряд аргументов для каждого параметра градиента, например:

#element {
    .gradient(~"linear-gradient(90deg, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)");
}

Все хорошо и хорошо с приведенным выше, и я могу использовать мои переменные внутри строки, используя String Interpolation (т.е. @{color-var}). Тем не менее, я также хотел бы запустить некоторые функции для переменных, что-то вроде этого:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, darken(@green, 10%) 50%, darken(@green, 10%) 100%)");

Проблема в том, что darken(@green, 10%) никогда не компилируется, и некоторые браузеры просто интерпретируют этот цвет как green. Кто-нибудь знает правильный способ включить возвращение функции darken() внутри строки выше, не создавая для этого отдельную переменную?

Для справки я пробовал следующее безрезультатно:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, "darken(@green, 10%)" 50%, "darken(@green, 10%)" 100%)");
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, {darken(@{green}, 10%)} 50%, {darken(@{green}, 10%)} 100%)");
4b9b3361

Ответ 1

Это должно работать, это похоже на ваш первый подход, но вы также должны включить ~:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, " darken(@green, 10%) ~" 50%, " darken(@green, 10%) ~" 100%)");

Ответ 2

Вы пытались сохранить затемненный цвет в переменную? Вот так:

@darkened-green: darken(@green, 10%);
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, @{darkened-green} 50%, @{darkened-green} 100%)");