2015-03-05 3 views
1

Следующий (vey simplified) код LESS работает правильно, значение печати width, ранее присвоенное переменной @screen-md.МЕНЬШЕ: переменная, которая ссылается на значение другого с именем конкатенации

@screen-md:700px; 
@size:md; 

@temp:"[email protected]{size}"; 
@width:@@temp; 

.foo 
{ 
    width:@width; 
} 

Представьте себе, что @size значение может быть параметр, передаваемый в Mixin. В общем, для получения желаемого результата мне нужно пройти через переменную @temp, сначала назначив ей имя переменной на основе значения @size, а затем используя Variable name, чтобы, наконец, присвоить ей переменную @width.

Мой вопрос: можно ли избежать необходимости @temp переменной, разрушаясь

@temp:"[email protected]{size}"; 
@width:@@temp; 

в нечто вроде @width:@@"[email protected]{size}"?

ответ

1

Да, можно свернуть его в одну линию, как показано ниже:

@screen-md:700px; 
@size:md; 
.mixin(@size){ 
    width: ~"@{[email protected]{size}}"; /* can either be assigned to another variable or property */ 
} 

.output{ 
    .mixin(md); 
} 

Пояснение:

  • [email protected]{size} - будет оценивать, чтобы screen-md в качестве входного параметра в Mixin md.
  • @{[email protected]{size} - поэтому поэтому @{screen-md}. Это будет оцениваться как 700px.
  • ~"" - экранирование используется, чтобы избежать кавычек, напечатанных на выходе.
+0

Спасибо, Гарри, но я не вижу '~()' statement .... Я вижу только '~" ", и в любом случае вывод тоже правильный. –

+1

@LucaDetomi К сожалению, я имел в виду только это. Ошибка печати. Приятно знать, что это помогло, хотя :) – Harry

+1

Спасибо, во всяком случае, я не понимаю, почему 'width: @ {screen - @ {size}};' не разрешено. может быть очень легко .... –

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