2013-10-07 23 views
2

如果我有手寫筆這樣的幾個變量:如何輸出與手寫筆的語法在變量

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

強調的是我自己的mixin返回類似背景的一些屬性,過濾器(IE瀏覽器)等 我怎樣才能顯示這些變量?

a 
    emphasisBackground 

這不起作用,手寫認爲它是一個屬性,而不是一個變量

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

這也不管用,它只是打印了IE瀏覽器的過濾性能,但並不是所有的變量的行數

我必須將這些東西變成mixin嗎?獲得這種效果

回答

1

一種方法是巢混入

// 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 

如果這是不能接受的,您可以添加更多的詳細介紹,你在做什麼,我會看看我是否能幫助你。

+0

這正是我所做的。這讓我覺得手寫筆對控制評估沒有很大的支持。雖然我可以將變量分配給變量,但除非它們是混合的,否則無法將它們打印出來。 – iopq

+0

我不認爲有任何方法將變量插入到參數mixin的結果中。這將是一個很酷的速記。不是你想要的,而是更緊湊一點的做一個單一的線強調(){emphais(0%,emphasisTop,emphasisBottom)} – Idistic

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; 
}