我对Sass很新。这是我的混音:
= foo($param1, $param2: 0, $param3: 123)
something: $param1
otherthing: $param2
yetanotherthing: $param3
当我这样称呼时:
div.foo
+foo(99, $param3: 444)
......它产生:
div.foo {
something: 99;
otherthing: 0;
yetanotherthing: 444;
}
当我这样称呼时:
div.foo
+background(+foo(99, $param3: 444))
...它产生一个错误“函数foo不支持关键字参数”。
当我这样称呼时:
div.foo
+background(foo(99))
......它产生:
div.foo {
background: foo(99);
}
这对我来说似乎很奇怪。我不能把自己的mixin的结果传递给另一个mixin吗?为什么+background-image(linear-gradient(bottom, #ababab, #dadada))
之类的东西有效?
非常感谢您的帮助。
答案 0 :(得分:2)
看起来你得到的是一条不太有用的错误信息。 Functons 做支持关键字参数。问题是,你没有功能。你有一个混合。这两者之间存在很大差异。
@function foo($a: true, $b: true) {
@return $b;
}
@debug foo($b: false);
.foo {
@if foo {
color: red;
} @else {
color: green;
}
}
Linear-gradient()
是一个功能。当您调用它时,它会返回一个值,该值可以打印,通过@debug
回显,或传递给其他函数或混合。 Compass背景* mixins还有其他一些魔法,但你必须自己深入挖掘。
Mixins没有返回值,无法以任何方式传递。它们只能用于发出代码。