2016-02-22 5 views
1

Я пытаюсь узнать меньше, и в настоящее время я выполняю упражнение, в котором я должен написать довольно сложный бит кода в Less. Я работаю из книги, и, насколько я могу сказать, что я написал код в точности так, как я сказал, но я получаю сообщение об ошибке:Почему я получаю это сообщение об ошибке от WinLess?

Parse error: Missing closing)

Вот код, раздел этот касается ошибок подсвечивается два * s в обе стороны:

@waarde: -((38*@index)-38); 
background-position: ~"@{waarde}px" 0; 


.menuspan (@bgc, @col, @tshad) { 
background-color: @@bgc; 
color: @@col; 
text-shadow: 0 0 5px @@tshad; 
} 

//m_item1 
@bgcolor_1:  #7da315; 
@color_1:  #3d4f0c; 
@tshadow_1:  #99bf31; 
//m_item2 
@bgcolor_2:  #1e8bb4; 
@color_2:  #223a44; 
@tshadow_2:  #44a8d0; 
//m_item3 
@bgcolor_3:  #c86c1f; 
@color_3:  #5a3517; 
@tshadow_3:  #d28344; 
//m_item4 
@bgcolor_4:  #d0a525; 
@color_4:  #604e18; 
@tshadow_4:  #d8b54b; 
//m_item5 
@bgcolor_5:  #af1e83; 
@color_5:  #460f35; 
@tshadow_5:  #d8b54b; 

.lusGuardedMixin (@index) when (@index < 0) { 

@waarde: -((38*@index)-38); 

**(~"[email protected]{index}")** { 
background-position: ~"@{waarde}px" 0px; 

&:hover { 
background-position: ~"@{waarde}px" -39px; 
} 

& span { 
.menuspan(~"[email protected]{index}", ~"[email protected]{index}", ~"[email protected]{index}") 
} 
} 

.lusGuardedMixin(@index + 1); 
} 

.lusGuardedMixin (6) {} 
.lusGuardedMixin (1); 

компилятор, кажется, ищет) слишком рано, потому что это, безусловно, есть, но он ведет себя так, как будто это не так. Как я могу это исправить?

+1

У вас есть какие-либо идеи, какая версия компилятора Меньше используются? Насколько мне известно, эти скобки, побег, цитаты не требуются в последней версии. И я честно не понимаю, почему ваш цикл mixin закодирован так, как есть. Он будет вводить цикл только тогда, когда @index меньше 0, но вы используете положительные числа в вызове. – Harry

+0

Я загрузил его с сайта сегодня, поэтому я предполагаю, что это самая последняя версия: D Как мне его настроить? EDIT: пожалуйста, игнорируйте символ <в коде. Я не знаю, как это опечатка. Это реальный код .D –

+1

В последней версии компилятора код, который присутствует в [этой демонстрации] (http://codepen.io/hari_shanx/pen/xZoWMO), - это все, что вам нужно. Попробуйте и дайте мне знать, если это сработает. – Harry

ответ

2

Как обсуждалось в комментариях, это не проблема ни с WinLess, ни с самими Less. Проблема заключается в коде, который вы использовали для компиляции. Вероятно, это было взято из устаревшего источника, который все еще использует старый синтаксис (который устарел несколько лет назад) и, следовательно, ошибка компиляции.

Ниже перечислены ошибки, которые необходимо исправить:

  • Первые две строки в коде будет производить ошибку компиляции, потому что @index переменная доступна только внутри цикла подмешать, а не за его пределами. Это совсем не требуется и может быть просто ошибкой копирования-вставки.

    @waarde: -((38*@index)-38); 
    background-position: ~"@{waarde}px" 0;
  • Далее, синтаксис интерполяции селектор, который используется является устаревшим/устаревшим один. Экранирование, фигурные скобки и кавычки вовсе не требуются в последней версии компилятора. Вместо этого,

    (~"[email protected]{index}"){...}

    только ниже достаточно:

    [email protected]{index} {...}
  • Наконец, сама петля имеет ошибку, потому что охранник проверка на @index меньше 0, но входные значения для Mixin и больше, чем 0, и поэтому mixin никогда не будет вызван. Кроме того, два вызова mixin в конце не требуются, и их можно изменить только на .lusGuardedMixin (5);.

внесении все вышеперечисленные изменения, код доступен в this demo должен компилироваться без каких-либо ошибок в последнем компилятором.

(Добавление моих комментариев и демы в ответ так, чтобы не оставить вопрос без ответа)

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