较少的编译器无法使用提取功能

时间:2019-06-04 09:27:09

标签: less

经过许多次测试后,我不明白为什么“提取”或“达到”功能在较少的情况下不起作用。 我尝试在我的less文件中使用这些功能,但没有成功。

file.less

@list: apple, pear, coconut , orange;
.test{
  color:extract(@list,0);
}
@backgroundcolors:{
  dark: #AA2222;
  blue: #AA3333
}
@colors: {
  bg-dark: #2f353b;
  bg-blue: #3598dc
}
each(@backgroundcolors, {

  .color-@{key}{
    background-color: @value;
    color: @index;

    a:at(@colors,bg-blue);
    b:at(@colors,"bg-blue");
    c:extract(@colors,0);
  }
});

file.css

    .test {
      color: extract(apple, pear, coconut, orange, 0);
    }
    .color-dark {
      background-color: #AA2222;
      color: 1;
      a: at(, bg-blue);
      b: at(, "bg-blue");
      c: extract(, 0);
    }
    .color-blue {
      background-color: #AA3333;
      color: 2;
      a: at(, bg-blue);
      b: at(, "bg-blue");
      c: extract(, 0);
    }
我的结果中的

.test不仅包含索引0,而且还包含@list中的任何其他项。在sencod尝试中,我试图在每个循环中使用“ at”或“ extract”,但是在这种情况下,我总是失败了。现在我使用lessc 3.9.0

我在哪里做错了?

1 个答案:

答案 0 :(得分:1)

extract函数的索引从1开始:

@list: apple, pear, coconut , orange;

a {
  value: extract(@list, 1); // value: apple
}

使用maps

@colors: {
  dark: #2f353b;
  blue: #3598dc;
}

a {
  color: @colors[dark]; // color: #2f353b
}

不知道at是什么意思。