2013-10-01 3 views
1

Я пытаюсь создать mixin, который примет два параметра и размер вывода в px и rem. Это код:Почему не будет компилироваться этот LESS css?

.sizing (@cssProperty; @sizeValue) { 
    @cssProperty: ((@sizeValue * @basefont) * 1px); 
    @cssProperty: (@sizeValue * 1rem); 
} 

Usage будет, как:

h2 { 
    .sizing(font-size; 1) 
} 

Который должен вывести (в зависимости от того, какого размера BASEFONT определен):

h2 { 
    font-size: 12px; 
    font-size: 1rem; 
} 

Но simpLESS не компилируется это, и говорит, что в этих двух строках имеется ошибка:

.sizing (@cssProperty; @sizeValue) { 
.sizing(font-size; 1); 

Что я делаю неправильно? Это из-за имен переменных переменных?

+0

Я думаю, это может быть ошибка синтаксиса в ваших 'деклараций @ cssProperty'. Проверьте это: http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/ –

+1

Возможный дубликат [Как передать имя свойства в качестве аргумента для mixin in less] (http://stackoverflow.com/questions/10689152/how-to-pass-a-property-name-as-an-argument-to-a-mixin-in-less) –

ответ

1

МЕНЬШЕ не позволяет использовать переменную в качестве имени CSS свойства.

В вашем коде выше @cssProperty: ((@sizeValue * @basefont) * 1px); есть определение новой переменной @cssProperty, а не инструкция CSS property: value, поэтому она не выводит вывод CSS.

Там обходной путь для того, что вы хотите достичь, хотя, см 14868042, 18558368 и т.д ...

2

Только что заметил, что вы пытаетесь использовать переменные как имена свойств вместо значений, которые не поддерживаются меньшим количеством.

Существует хак выделен в этом ответе, как обходной путь:

How to pass a property name as an argument to a mixin in less

.mixin(@prop, @value) { 
    Ignore: ~"a;@{prop}:@{value}"; 
} 
+1

Это странно, на их веб-сайте говорится: эта точка с запятой рекомендуется: * Параметры разделяются точкой с запятой или запятой. Рекомендуется использовать точку с запятой. * [Источник] (http://lesscss.org/#-parametric-mixins) –

+0

Не уверен, никогда не использовал точку с запятой раньше. Дайте мне знать, если это сработает. –

+0

Ну, он возвращает ошибку компилятора, поэтому я думаю, что это не так :). Возможно, это компилятор. Кстати, после ваших изменений он компилируется без ошибок, но mixin ничего не возвращает (так что шрифты не такие, как в моем примере), любые идеи, почему это не работает? –

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