2

如果我在手写笔中有一些变量,如下所示:

emphasisBackground = emphasis(0%, emphasisTop, emphasisBottom)
emphasisHover = emphasis(20%, emphasisTop, emphasisBottom)
emphasisActive = emphasis(-10%, emphasisTop, emphasisBottom)

重点是我自己的 mixin,它返回一些属性,如背景、过滤器(对于 IE)等。我怎样才能显示这些变量?

a
  emphasisBackground

这不起作用,Stylus 认为它​​是一个属性,而不是一个变量

a unquote(s('%s',emphasisBackground))

这也不起作用,它只是打印 IE 的过滤器属性,而不是变量的所有行

我必须把这些东西变成mixin吗?

4

2 回答 2

1

获得这种效果的一种方法是嵌套 mixins

// Mixin that does the work (whatever that is) 
emphasis(percent, eStart, eStop)
  .
  .
  .

// Helper mixins 
emphasisBackground 
  emphasis(0%, emphasisTop, emphasisBottom)

emphasisHover 
  emphasis(20%, emphasisTop, emphasisBottom)

emphasisActive 
  emphasis(-10%, emphasisTop, emphasisBottom) 

然后像现在一样使用它。

a
  emphasisHover 

如果这不可接受,您可以添加更多关于您正在做什么的详细信息,我会看看是否可以为您提供帮助。

于 2013-10-11T07:24:23.307 回答
0

在最新版本的 Stylus 中有@block支持(文档)。

有了它,你可以让任何函数返回一个block你可以保存到变量中的对象,然后在你想要的任何地方使用,一个抽象的例子:

foo(w, h)
  return @block {
    width: w
    height: h
  }

bar = foo(10px, 20px)
baz = foo(20px, 30px)

a
  {bar}

b
  {baz}

将呈现为

a {
  width: 10px;
  height: 20px;
}
b {
  width: 20px;
  height: 30px;
}
于 2014-01-17T22:26:51.297 回答