【问题标题】:How can I possibly make this LESSCSS loop work correctly?我怎样才能使这个 LESSCSS 循环正常工作?
【发布时间】:2014-11-13 21:45:04
【问题描述】:

在我的项目中,我使用了 4 个颜色主题,通过这个函数,我想自动分配变量中包含的特定颜色值,并且我还想使用变量的名称将其分配给类。

// the variables
@peach: 3399cc;
@green: ff00CC;
@orange: FF0033;
@yellow: EE0033;

@list: @peach, @green, @orange, @yellow;

//我的LESS函数

它使用变量值生成类名:ex: bsq3399cc 我希望类名与变量名相同:ex bsq-peach

我正在使用此处记录的 .for 函数。 https://github.com/seven-phases-max/less.curious/blob/master/articles/for-each.md

.bsq {
    .for(@list); .-each(@name) {
        &@{name} {
            @color: color("#@{name}");
            li& { background: @color; }
            li& strong { background:lighten(@color, 10%); }
            li& i { background:lighten(@color, 20%); }
        }
    }
}

.for 混入 //

// ............................................................
// .for

.for(@i, @n) {.-each(@i)}
.for(@n)     when (isnumber(@n)) {.for(1, @n)}
.for(@i, @n) when not (@i = @n)  {
    .for((@i + (@n - @i) / abs(@n - @i)), @n);
}

// ............................................................
// .for-each

.for(@array)   when (default()) {.for-impl_(length(@array))}
.for-impl_(@i) when (@i > 1)    {.for-impl_((@i - 1))}
.for-impl_(@i) when (@i > 0)    {.-each(extract(@array, @i))}

我使用的 HTML 代码在这里。

<ul class="testing">
    <li class="bsq3399cc"><strong>1</strong><i>10</i></li>
    <li class="bsqff00CC"><strong>2</strong><i>20</i></li>
    <li class="bsqFF0033"><strong>3</strong><i>30</i></li>
    <li class="bsqEE0033"><strong>4</strong><i>40</i></li>
</ul>

【问题讨论】:

    标签: css less lesscss-resources


    【解决方案1】:

    好吧,您在 sn-p 中的错误是您实际上没有为类提供这些“名称”(即peachgreenorangeyellow),而只提供十六进制颜色值。 请注意:

    // the variables
    @peach:  3399cc;
    @green:  ff00CC;
    @orange: FF0033;
    @yellow: EE0033;
    
    @list: @peach, @green, @orange, @yellow;
    

    @list 等于 3399cc, ff00CC, FF0033, EE0033

    我猜你真正的意思是这样的:

    @peach:  #3399cc;
    @green:  #ff00CC;
    @orange: #FF0033;
    @yellow: #EE0033;
    
    @list: 'peach', 'green', 'orange', 'yellow';
    
    li.bsq- {
        .for(@list); .-each(@name) {
            @name_: e(@name);
            @color: @@name;
            &@{name_} {
                background: @color;
                strong {background: lighten(@color, 10%)}
                i      {background: lighten(@color, 20%)}
            }
        }
    }
    

    ---

    此外,我还将摆脱 @green/'green' 重复,除非您真的需要其他不同的变量:例如参见 Loop over an array of name value pairs in LESShttps://stackoverflow.com/a/25877100 中的最后一个示例(相同方法的相反方法) .

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2020-03-07
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 2021-01-30
      • 2017-12-20
      相关资源
      最近更新 更多