0

我对萨斯很陌生。这是我的混音:

= 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))起作用?

非常感谢您的帮助。

4

1 回答 1

2

看起来您收到了一条不是很有用的错误消息。函数确实支持关键字参数。问题是,您没有功能。你有一个mixin。两者有很大的不同。

@function foo($a: true, $b: true) {
    @return $b;
}

@debug foo($b: false);

.foo {
    @if foo {
        color: red;
    } @else {
        color: green;
    }
}

Linear-gradient()是一个函数。当您调用它时,它会返回一个值,该值可以打印、回显@debug或传递给其他函数或 mixins。Compass background* mixin 还涉及其他一些魔法,但您必须自己挖掘源代码。

Mixins 没有返回值,不能以任何方式传递。它们只能用于发出代码。

于 2013-06-04T14:09:54.690 回答