css – 对评估的字符串颜色应用颜色函数

前端之家收集整理的这篇文章主要介绍了css – 对评估的字符串颜色应用颜色函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有循环in less,它是用颜色迭代抛出的编号变量.当我只需要评估颜色时它工作正常,但是当我想要用功能改变颜色时它也没有.
@cat-1:#c40009;
....

.gen-cats-filter (@index,@prefix) when (@index > 0) {
  .@{prefix}@{index}{
   background-color: ~"@{cat-@{index}}";
   &:hover{
     background-color: darken(~"@{cat-@{index}}",20%);
   }
  }
  .gen-cats-filter(@index - 1,@prefix);
}
.gen-cats(14,cat);

但这会引发错误.

有没有办法让它工作,并在悬停使颜色更暗?

解决方法

推荐方案:

实际上,我使上述内容比要求复杂得多.一个简单的选择是使用连接形成变量名,然后在darken()函数本身内进行评估,而不是使用〜“”(输出String而不是Color).

&:hover{
   @clr: "@{prefix}-@{index}";
   background-color: darken(@@clr,20%);
}

原答案:

假设我正确理解了您的查询,您可以通过以下方式实现:

@cat-1:#c40009;
@cat-2:#0009c4;

.gen-cats-filter (@index,@prefix) when (@index > 0) {
  .@{prefix}@{index}{
    background-color: ~"@{@{prefix}-@{index}}";
   &:hover{
      @clr: "@{@{prefix}-@{index}}";
      background-color: darken(color(~"`function(){return @{clr}}()`"),@prefix);
}
.gen-cats-filter(2,cat); //I assumed this line was an error in your code and hence modified it.

> @clr:“@ {@ {prefix} – @ {index}}”; – 只是为了降低复杂性
下一行.对于@ cat-1,这评估为“#00c409”.
> color(〜“`function(){return @ {clr}}()`”) – 将字符串转换为
可以在变暗功能中使用的颜色值.
> darken() – 使颜色值变暗.

@L_403_0@

随着Less编译器的最新更新,我们也可以避免JS函数位并直接写入如下:

background-color: darken(color(@clr),20%);

猜你在找的CSS相关文章