2014-02-07 131 views
1

我在less-website上找到了以下示例。這些是創建陰影的命令。我想知道哪一個被首先調用,因爲它們具有相同的函數名稱。爲什麼他們有相同的名字?具有相同名稱的2個函數

@base: #f938ab; 

.box-shadow(@style, @c) when (iscolor(@c)) { 
    -webkit-box-shadow: @style @c; 
    -moz-box-shadow: @style @c; 
    box-shadow:   @style @c; 
} 

.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { 
    .box-shadow(@style, rgba(0, 0, 0, @alpha)); 
} 
+0

請參閱[模式匹配](http://lesscss.org/features/#mixins-parametric-feature-pattern-matching)和[Mixin Guards](http://lesscss.org/features/#mixin-guards -特徵)。 –

回答

4

減少允許您使用相同的名稱(或3,4,5 ...)創建兩個mixin(它們不是真正的函數)。如果它們都匹配調用的參數,它們將按照mixin定義的順序執行它們的效果。

在這種情況下,由於它們的條件when語句會過濾掉傳入的值,所以不會同時調用這兩個函數。如果第二個參數是一個顏色,則調用第一個mixin。如果第二個值是一個數字,則調用第二個mixin。

在這種情況下,第二個mixin在其內部使用第一個mixin。因此,如果通過傳遞一個數字來調用第二個,它將默認顏色爲黑色,但會根據數字添加不透明度級別。然後它調用第一個mixin以實際輸出具有定義的黑色的最終屬性值。

一般來說,它允許靈活性和快捷方式與第二個mixin進行mixin調用。

+0

非常感謝你! – user2952265

相關問題