Compiler errors 为什么我从WinLess收到此错误消息?

Compiler errors 为什么我从WinLess收到此错误消息?,compiler-errors,less,Compiler Errors,Less,我正在努力减少学习,目前正在做一个练习,在这个练习中,我必须用更少的时间编写一段相当复杂的代码。我在一本工作簿上工作,据我所知,我已经完全按照别人告诉我的那样编写了代码,但我不断收到错误: 分析错误:缺少结束符) 以下是代码,此错误涉及的部分在两侧用两个*突出显示: @waarde: -((38*@index)-38); background-position: ~"@{waarde}px" 0; .menuspan (@bgc, @col, @tshad) { background-col

我正在努力减少学习,目前正在做一个练习,在这个练习中,我必须用更少的时间编写一段相当复杂的代码。我在一本工作簿上工作,据我所知,我已经完全按照别人告诉我的那样编写了代码,但我不断收到错误:

分析错误:缺少结束符)

以下是代码,此错误涉及的部分在两侧用两个*突出显示:

@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);

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

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

& span {
.menuspan(~"bgcolor_@{index}", ~"color_@{index}", ~"tshadow_@{index}")
}
}

.lusGuardedMixin(@index + 1);
}

.lusGuardedMixin (6) {}
.lusGuardedMixin (1);
@waarde:-((38*@index)-38);
背景位置:~“{waarde}px”0;
.menuspan(@bgc,@col,@tshad){
背景色:@@bgc;
颜色:@@col;
文本阴影:0 0 5px@@tshad;
}
//m_项目1
@bgcolor_1:#7da315;
@颜色1:#3d4f0c;
@tshadow_1:#99bf31;
//m_项目2
@BGU颜色2:#1e8bb4;
@颜色2:#223a44;
@tshadow_2:#44a8d0;
//m_项目3
@bgcolor#U 3:#c86c1f;
@颜色3:#5a3517;
@tshadow_3:#d28344;
//m_项目4
@bgcolor_4:#d0a525;
@颜色4:#604e18;
@tshadow_4:#d8b54b;
//m_项目5
@bgcolor_5:#af1e83;
@颜色:460f35;
@tshadow_5:#d8b54b;
.lusguardemixin(@index)当(@index<0){
@瓦德:-((38*@指数)-38);
**(~“.m_item@{index}”)**{
背景位置:~“{waarde}px”0px;
&:悬停{
背景位置:~“{waarde}px”-39px;
}
&跨度{
.menuspan(~“bgcolor{index}”、“color{index}”、“tshadow{index}”)
}
}
.lusguaredmixin(@index+1);
}
LusguaredMixin先生(6){}
.lusguaredmixin(1);

编译器似乎太早就在寻找)了,因为它肯定在那里,但它的行为却好像不在那里一样。如何解决此问题?

如评论中所述,WinLess或Less本身都没有问题。问题在于用于编译的代码。它可能来自一个仍然使用旧语法(几年前已被弃用)的过时源代码,因此产生了编译错误

以下是需要更正的错误:

  • 代码中的前两行将产生编译错误,因为
    @index
    变量仅在mixin循环内可用,而不在其外部可用。这完全不是必需的,可能只是复制粘贴错误

    @waarde: -((38*@index)-38);
    background-position: ~"@{waarde}px" 0;
  • 接下来,使用的选择器插值语法是过时/不推荐的语法。最新版本的编译器中根本不需要转义、大括号和引号。而不是这个,

    (~".m_item@{index}"){...}
    仅以下内容就足够了:

    .m_item@{index} {...}
  • 最后,循环本身有一个错误,因为保护正在检查
    @index
    是否小于0,但是mixin的输入值都大于0,因此mixin将永远不会被调用。另外,末尾的两个mixin调用不是必需的,它们可以更改为just
    .lusguaredmixin(5)

进行上述所有更改后,中可用的代码在最新的编译器中应该可以正常编译,不会出现任何错误


(添加我的评论和演示作为答案,以免问题得不到解答)

您知道使用的是哪一版本的Less编译器吗?据我所知,在最新版本中不需要大括号、escape和引号。我真的不明白为什么你的mixin循环是这样编码的。只有当@index小于0时,它才会进入循环,但您在调用中使用的是正数。我今天从网站下载了它,所以我猜它是最新版本:D我应该如何设置它?编辑:请忽略代码中的<符号。我不知道怎么说,但那是个打字错误。在最新版本的编译器中,存在于中的代码就是您所需要的全部。试试看,如果有用请告诉我。谢谢。它似乎确实起作用了。然而,我有一个新的错误。伊迪特:没关系。当我粘贴代码时,我忘了删除出现在您代码上方的一段代码。它工作得很好。非常感谢你的时间和帮助:)老实说,我不知道。您的版本可能与此有关,因为我提供的代码在CodePen和