2016-09-27 5 views
1

これは私のループです:LESSループ誤差は3

@loop-start: 1; 
@loop-end: 20; 
.loop(@n, @i) when (@n =< @loop-end) { 
    .testi-square:nth-of-type(@{n}) {order: (@i);} 
    .testi-square:nth-of-type(@{n + 1}) {order: (@i + 1);} 
    .testi-square:nth-of-type(@{n + 2}) {order: (@i + 2);} 

    .loop((@n + 3), (@i + 6)); // next iteration 
} 
.loop(@loop-start, @loop-start); // launch the loop 

そして、これは私が取得エラーです:

Running "less:compileThemeWeb" (less) task 
ParseError: Missing closing ')' in less/theme-web.less on line 3630, column 29: 
3629 .testi-square:nth-of-type(@{n}) {order: (@i);} 
3630 .testi-square:nth-of-type(@{n + 1}) {order: (@i + 1);} 
3631 .testi-square:nth-of-type(@{n + 2}) {order: (@i + 2);} 
Warning: Error compiling less/theme-web.less Use --force to continue. 

Aborted due to warnings. 

私は私のテーマを作成するには、最新のブートストラップを使用しています。私はこの問題を6ヶ月間使っていますが、LESSのバージョンが古すぎるとは思えません。問題を解決する方法がわからない場合は、構文のように見えますが、わかりません。一日中http://lesscss.org/features/#loops-featureを見て、インターネットを掃除しましたが、サイコロはありませんでした。

+0

'nth-of-type(@ {n + 1})' - これは無効です。セレクタ補間で式やその他のもの(関数呼び出しなど)を使用することはできません。 '@ {n}'は有効であり、 '@ {n + 1}'は有効ではありません。 –

+0

申し訳ございません@ seven-phases-max。あなたのコメントを見る前に答えを投稿してください。あなたは答えとしてあなたのコメントを投稿したはずだと思います。 – Harry

答えて

3

エラーが原因で、次の行である:

.testi-square:nth-of-type(@{n + 1}) {order: (@i + 1);} 
.testi-square:nth-of-type(@{n + 2}) {order: (@i + 2);} 

コンパイラは@{n + 1}に遭遇すると、それはn + 1という名前の変数を探していることになります。 n + 1という名前の変数はありません(有効な構文でもありません)。コンパイルエラーが発生します。修正プログラムはこのようなものを使用することです:彼のコメントで7相-MAXで述べたように

@loop-start: 1; 
@loop-end: 20; 
.loop(@n, @i) when (@n =< @loop-end) { 
    .testi-square:nth-of-type(@{n}) {order: (@i);} 
    @temp: @n + 1; 
    .testi-square:nth-of-type(@{temp}) {order: (@i + 1);} 
    @temp2: @n + 2; 
    .testi-square:nth-of-type(@{temp2}) {order: (@i + 2);} 

    .loop((@n + 3), (@i + 6)); // next iteration 
} 
.loop(@loop-start, @loop-start); // launch the loop 

を、我々は、式を使用することはできません、関数はセレクタ補間内などを呼び出します。変数のみが許可されます。

+1

ああ、動作します!ありがとう、役に立つ説明 –

+0

ようこそ@AlexPaxton。お力になれて、嬉しいです :) – Harry