У меня есть следующий миксин:
@myColor = #123456;
.mixin(@a) when (@a = @myColor){ // do something }
Это, однако, вызывает эту ошибку: Невозможно выполнить сравнение
Почему это?
Может показаться (начиная с lesscss 1.2.2), что охранники поддерживают только сравнение измерений и ключевых слов. (поищите в источнике «сравнение:») Так что, к сожалению, сравнение двух цветов или строк просто не будет работать.
Просто обновите less.js до последней версии (1.2.2 - текущая), и она будет работать.
У меня была такая же проблема. Теперь это исправлено для меня (Мой вопрос с примером кода: Lesscss Mixins с охранниками. Синтаксическая ошибка ). Я думаю, это будет исправлено и для вашего примера.
ОБНОВЛЕНИЕ : четыре мысли (опять же, у меня нет опыта работы с самой LESS, я просто смотрю документацию).
Является ли переменнаяВы передаете микшину (@a) цвет в шестнадцатеричном формате?Возможно, он не может выполнить сравнение, потому что вы передаете другой тип переменной.
@a
Просто чтобы быть уверенным, вы дважды проверили, что вы назвали правильную переменную (@myColor), а не (@mycolor).
@myColor
@mycolor
Вы пытались изменить when на (@myColor = @a), чтобы проверить, работает ли это.В одном примере в http://lesscss.org/, где они используют переменную, не определенную в mixin (они используют @media), в том порядке, в котором они ее имеют.
when
(@myColor = @a)
@media
Наконец, мой первый оригинальный ответ был попытаться:
.mixin(@a, @b: @myColor) when (@a = @b){ // do something }