Arrays 减少混音,从数组中提取颜色,悬停时,向该数组中添加深色

Arrays 减少混音,从数组中提取颜色,悬停时,向该数组中添加深色,arrays,less,less-mixins,Arrays,Less,Less Mixins,是否可以使用颜色使阵列变暗?像这样: @array: @color1 @color2 @color3 @color4 .color-mix(@i) when (@i > 0) { .myClass { li:nth-child(@{i}) { .background-color(extract(@array, @i)); &:hover { // THIS IS NOT WORKIN

是否可以使用颜色使阵列变暗?像这样:

@array: @color1 @color2 @color3 @color4
.color-mix(@i) when (@i > 0) {
    .myClass {
        li:nth-child(@{i}) {
            .background-color(extract(@array, @i));
            &:hover {
              // THIS IS NOT WORKING, IS THERE A RIGHT APPROACH FOR THIS?
                .background-color(extract(darken(@array, 5.5%, @i)));
            }
        }
    .color-mix(@i - 1);
    }
}
// Iterate
.color-mix(4);

如果我正确理解你的问题,是的,你可以做到。下面是你如何做到这一点。您的代码几乎是正确的,只是它没有尝试使提取的值变暗,而是尝试提取一个变暗的值(这是不可能的)

@array:#fff#00f#ff0#f00;
。当(@i>0)时的颜色混合(@i){
.myClass{
李:第n个孩子(@{i}){
.背景色(提取(@array,@i));
&:悬停{
背景颜色(颜色变深(提取(@array,@i),5.5%);
}
}
}
.color mix(@i-1);/*我移动了它,因为我认为它放错了位置*/
}
//迭代
.颜色混合(4);

我建议您对代码进行的一项改进是将
:鼠标悬停在
.background color
混合框内,如下所示。这使得它更容易阅读,因为在另一个函数中没有包装函数调用,等等

@array:#fff#00f#ff0#f00;
。当(@i>0)时的颜色混合(@i){
.myClass{
李:第n个孩子(@{i}){
.背景色(提取(@array,@i));
}
}
。颜色组合(@i-1);
}
//迭代
.颜色混合(4);
.背景色(@color){
&{
背景色:@色;
&:悬停{
背景色:深色(@color,5.5%);
}
}
}

更好的是,如果可以的话,尽量避免混音:)

@array:#fff#00f#ff0#f00;
。当(@i>0)时的颜色混合(@i){
.myClass{
李:第n个孩子(@{i}){
@颜色:提取(@array,@i);
背景色:@色;
&:悬停{
背景色:深色(@color,5.5%);
}
}
}
。颜色组合(@i-1);
}
//迭代
.颜色混合(4);

哦!所以我只是做错了顺序。好的,谢谢!是@调情,我还添加了另一个示例。看一看,它可能会对您有所帮助,因为它看起来更容易理解和更简洁(而不是将函数包装在函数中等等)