如何使用Stylus语法输出变量

时间:2013-10-07 17:17:37

标签: css stylus

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

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

强调是我自己的mixin,它返回一些属性,如background,filter(用于IE)等。 如何显示这些变量?

a
  emphasisBackground

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

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

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

我是否必须将这些东西变成混合物?

2 个答案:

答案 0 :(得分: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 

如果这是不可接受的,你可以添加更多关于你正在做什么的细节,我会看看我是否可以帮助你。

答案 1 :(得分:0)

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

有了它,你可以让任何函数返回一个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;
}