我正在扩展SASS mixin以生成背景颜色。
这是我的混音:
@mixin color-columns ($count, $baseName, $startcolor) {
$loop_color : $startcolor;
@for $i from 0 through $count {
$loop_color : darken($loop_color, 8%);
.#{$baseName}-#{$i} {
background-color : $loop_color;
}
}
}

我这样用它:
@include color-columns(5,'col', $blue);

我想做的是传入“变暗”。或者'减轻'作为变量,所以我可以用SASS颜色功能控制。像这样:
@mixin color-columns ($count, $baseName, $startcolor, $change: 'darken') {
$loop_color : $startcolor;
@for $i from 0 through $count {
$loop_color : $change($loop_color, 8%);
.#{$baseName}-#{$i} {
background-color : $loop_color;
}
}
}

当我尝试时,第一列的CSS就像这样:
background-color: darken darken #005387, 8%, 8%;

我在传递交换函数的变量时错过了连接。
答案 0 :(得分:1)
目前不支持定义动态函数名称。该值为requested several years ago,此功能甚至有open pull request,但尚未合并。
但是,可以使用内置的call($function, $args...)
函数动态调用函数。它允许您避免if-else级联,并且可以在您的示例中使用,如下所示:
$loop_color : call($change, $loop_color, 8%);
答案 1 :(得分:0)
我最后添加了一个@if来使其工作:
@mixin color-columns ($count, $startcolor, $start : darken) {
$loop_color : $startcolor;
@if $start == 'lighten' {
@for $i from 0 through $count {
$loop_color : lighten($loop_color, 5%);
.conBG-#{$i} {
background-color : $loop_color;
}
}
}
@else {
@for $i from 0 through $count {
$loop_color : darken($loop_color, 5%);
.conBG-#{$i} {
background-color : $loop_color;
}
}
}
}