Less 函数能否返回*仅*一个rgba值?

Less 函数能否返回*仅*一个rgba值?,less,Less,我将rgba值存储为变量(例如:@black:rgba(0,0,0,1.0);),我意识到如果我能生成alpha值变量就好了 所以,我试过这个 .color_black (@alpha: 1.0) { rgba(0, 0, 0, @alpha) } 问题很简单,这是行不通的。parameter部分似乎是正确的,实际上,只有在添加rgba()代码后,它才似乎“中断”。Less真的不喜欢rgba的电话 现在,我可以通过定义属性标记来实现这一点,例如 .color_black (@alpha: 1.

我将rgba值存储为变量(例如:
@black:rgba(0,0,0,1.0);
),我意识到如果我能生成alpha值变量就好了

所以,我试过这个

.color_black (@alpha: 1.0) { rgba(0, 0, 0, @alpha) }
问题很简单,这是行不通的。parameter部分似乎是正确的,实际上,只有在添加rgba()代码后,它才似乎“中断”。Less真的不喜欢rgba的电话

现在,我可以通过定义属性标记来实现这一点,例如

.color_black (@alpha: 1.0) { color: rgba(0, 0, 0, @alpha) }
但是,这种方式破坏了储存单一颜色并在全城重复使用的实用性。在背景、文本、渐变等方面

那么,有没有关于如何解决这个问题的想法

编辑:虽然我对此也不满意。。这是我能想出的最好的解决办法

.color_black (@prop: color, @alpha: 1.0) { @prop: rgba(0, 0, 0, @alpha) }
它不是一个有用的函数,因为您不能在其他属性(渐变等)中使用它。想法?

看看less的颜色功能:

我认为“褪色”是你想要的。只需将颜色设置为变量

@black: #000000;
…并使用
fade()


您面临这个问题可能是因为rgba()是一个;hsla()也是如此

要将mixin用作根据需要设置变量的函数,您需要使用,如下所示:

// mixin
.toRGBA( @color, @alpha) { 
  @color_plus_alpha: rgba(red(@color), green(@color), blue(@color), @alpha); //[A]
}


// usage
.someClass {
  .toRGBA(orange, 0.3); // [B]
  color: @color_plus_alpha; // [C]
}
这里需要注意的是添加的行[B],以及始终需要使用[C]中的变量
@color\u plus\u alpha
,该变量在mixin on行[A]中定义

这在编辑时起作用,并输出以下内容:

.someClass {
  color: rgba(255, 165, 0, 0.3);
}
但是,这仍然不允许按照OP的要求将mixin的“输出”分配给任意变量

注意,red()、green()和blue()也是内部函数,分别输出输入颜色的红色、绿色和蓝色分量


编辑:更新了答案,使其更易于重用。以前的版本只适用于方便的硬编码属性名
color

,如果我的帖子不起作用,我可能会这样做。但是,根据您的评论,这是否意味着我想要的方法不起作用?我在使用多个方法时遇到了这个问题。在我将我的mixin名称从.rgba()改为其他名称后,它起到了作用。重新审视了这一点,并意识到我的答案实际上并没有解决OP的问题,并更新了答案,使其更接近OP当前版本的less(2.5.0)。欢迎对此提出任何建议,以获得OP想要的东西。
.someClass {
  color: rgba(255, 165, 0, 0.3);
}