Rest Params
Stylus 支持以 name...
形式的剩余参数。这些参数会消耗传递给 mixin 或函数的剩余参数。当使用(例如)隐式函数调用支持来应用供应商前缀(如 -webkit
或 -moz
)时,这非常有用。
在下面的示例中,我们消耗传递的所有参数,并将它们简单地应用于多个属性。
box-shadow(args...)
-webkit-box-shadow args
-moz-box-shadow args
box-shadow args
#login
box-shadow 1px 2px 5px #eee
产生:
#login {
-webkit-box-shadow: 1px 2px 5px #eee;
-moz-box-shadow: 1px 2px 5px #eee;
box-shadow: 1px 2px 5px #eee;
}
如果我们想要查看特定参数(例如 x-offset
),我们可以简单地使用 args[0]
。或者,我们可能希望重新定义 mixin:
box-shadow(offset-x, args...)
got-offset-x offset-x
-webkit-box-shadow offset-x args
-moz-box-shadow offset-x args
box-shadow offset-x args
#login
box-shadow 1px 2px 5px #eee
产生:
#login {
got-offset-x: 1px;
-webkit-box-shadow: 1px 2px 5px #eee;
-moz-box-shadow: 1px 2px 5px #eee;
box-shadow: 1px 2px 5px #eee;
}
arguments
arguments
变量被注入到 mixin 和函数体中,包含传递的确切表达式。这对于多个原因非常有用(特别是供应商支持),因为您得到了确切的表达式,包括逗号。
例如,如果我们使用剩余参数,则逗号会被消耗(因为它是表达式分隔符):
box-shadow(args...)
-webkit-box-shadow args
-moz-box-shadow args
box-shadow args
#login
box-shadow #ddd 1px 1px, #eee 2px 2px
产生不希望的结果:
#login {
-webkit-box-shadow: #ddd 1px 1px #eee 2px 2px;
-moz-box-shadow: #ddd 1px 1px #eee 2px 2px;
box-shadow: #ddd 1px 1px #eee 2px 2px;
}
让我们使用 arguments
重新定义 mixin:
box-shadow()
-webkit-box-shadow arguments
-moz-box-shadow arguments
box-shadow arguments
body
box-shadow #ddd 1px 1px, #eee 2px 2px
现在,产生所需的结果:
body {
-webkit-box-shadow: #ddd 1px 1px, #eee 2px 2px;
-moz-box-shadow: #ddd 1px 1px, #eee 2px 2px;
box-shadow: #ddd 1px 1px, #eee 2px 2px;
}