少CSS:调用另一个mixin时,我可以调用一个mixin作为参数吗?

少CSS:调用另一个mixin时,我可以调用一个mixin作为参数吗?,css,less,less-mixins,Css,Less,Less Mixins,我试图在另一个mixin中调用一个mixin作为参数,但出现语法错误。有问题的mixin调用中没有变量,只有参数 我不确定这是否可行。我在这里看到的答案似乎要么是黑客,要么是将变量和字符串作为参数处理 更少的CSS // color variables for user's color @userColor: #13acae; @darkUser: hsl(hue(@userColor), saturation(@userColor), lightness(tint(@userColor, 30

我试图在另一个mixin中调用一个mixin作为参数,但出现语法错误。有问题的mixin调用中没有变量,只有参数

我不确定这是否可行。我在这里看到的答案似乎要么是黑客,要么是将变量和字符串作为参数处理

更少的CSS

// color variables for user's color
@userColor: #13acae;
@darkUser: hsl(hue(@userColor), saturation(@userColor), lightness(tint(@userColor, 30%)));
@lightUser: hsl(hue(@userColor), saturation(@userColor), lightness(shade(@userColor, 30%)));

// color mixin to alter user's color using Less 'darken' and 'contrast' functions
.contrastColorDark(@percent) { color: darken(contrast(@userColor, @darkUser, @lightUser), @percent); }

// border mixin
.border(@width, @color) { border: @width solid @color; }

// CSS rule using both mixins
.thing {
    .border(1px, .contrastColorDark(10%));
}
错误(在
之前的点处。对比色暗(10%)


我试图实现的目标:我试图使框边框颜色与其中使用对比度混合的某些元素相匹配。

如评论中所述,较少的混合不是函数,混合调用不能返回任何值。因此,一个mixin(或其输出值)不能作为参数传递给另一个mixin

尽管如此,我们仍然可以在mixin中设置一个变量,在需要的每个选择器块中调用mixin,并使用其中定义的变量。mixin调用有效地将其中定义的变量公开给父范围

下面是一个示例片段,它将调用对比度mixin并将计算值指定为元素的文本颜色和边框颜色

//用户颜色的颜色变量
@用户颜色:#13acae;
@darkUser:hsl(色调(@userColor)、饱和度(@userColor)、亮度(色调(@userColor,30%));
@lightUser:hsl(色调(@userColor)、饱和度(@userColor)、明度(色度(@userColor,30%));
//颜色混合,使用较少的“变暗”和“对比度”功能改变用户的颜色
.ColorDark(@百分比){
@颜色:变暗(对比度(@userColor、@darkUser、@lightUser)、@percent);
//颜色:变暗(对比度(@userColor、@darkUser、@lightUser)、@percent);
}
//边境混血儿
.边框(@width,@color){
边框:@width solid@color;
}
//使用两个mixin的CSS规则
.事情{
.深色(10%);
颜色:@颜色;
.边框(1px,@颜色);
}
.事情2{
.深色(50%);
颜色:@颜色;
.边框(1px,@颜色);
}

不,你不能这样做。少混音不是函数,它们不会返回任何值。但也许有一种不同的方法来获得您所需要的。你能告诉我实际问题和预期产量吗?例如,您仍然可以调用mixin,然后将其输出值作为参数传递(语法上有点不同)。这绝对符合我的要求:框边框颜色与其中使用对比度mixin的某些元素相匹配。请参见
函数
@Harry谢谢,这是一个很好的解释。我接受了。
SyntaxError: expected ')' got '.'