«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу использовать переменные для динамического создания имен свойств в LESS?

Как я могу использовать переменные для динамического создания имен свойств в LESS?

Опубликовано 21 декабря 2024 г.
Просматривать:810

How can I use variables to dynamically create property names in LESS?

Использование переменных в именах свойств в LESS (динамические свойства/интерполяция имен свойств)

LESS в настоящее время не поддерживает динамически вставляемые свойства, несмотря на некоторые обсуждения этой темы на Переполнение стека.

Обходной путь № 1: внедрить динамически генерируемые свойства в свойство Value

Этот обходной путь встраивает динамически создаваемые свойства в жестко закодированное значение свойства:

.vendors(@property, @value, @pre: ect) {
  -inj:~"@{pre}; -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value}";
}

Обходной путь № 2: внедрить динамически генерируемые свойства в имя следующего класса (LESS

Это обходной путь создает виртуальный класс или набор правил, который включает поставщиков и рекурсивно создает следующий класс:

.vendors(@property, @value, @rest:"") {
  @inject:~"@{rest} -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value};";
}

.test(@nextclass){
  .vendors(transform, "matrix(2,0,0,2,20,20)");
  .vendors(transform-origin,"10px 10px", @inject);
  (~"{@{inject}} .@{nextclass}"){/*next class properties*/};
}

Обходной путь № 3: внедрить динамически генерируемые свойства в имя следующего класса (LESS 1.4.0 )

Эта версия использует рекурсию для преодоления ограничений в LESS 1.4 .0:

@nl: `"\n\t"`;

.multi(@props,@vals,@i,@inj) {
  @property: extract(@props, 1);
  @value: extract(@vals, 1);
  @inject:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
}

.multi(@props,@vals,@i,@inj:"") when (@i > 0) {
  @property: extract(@props, @i);
  @value: extract(@vals, @i);
  @injnext:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
  .multi(@props,@vals,(@i - 1),@injnext);
}

В LESS версии 1.6 и выше интерполяция имен свойств реализована изначально, поэтому никаких обходных путей не требуется.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3