Sass:在+ background()中调用我自己的mixin会导致"不支持关键字参数"

时间:2013-06-04 13:33:59

标签: sass mixins compass-sass

我对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))之类的东西有效?

非常感谢您的帮助。

1 个答案:

答案 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没有返回值,无法以任何方式传递。它们只能用于发出代码。