2017-04-19 26 views
1

flex屬性太無序。 我想寫一個較少的函數來解決這個問題。 就像:如何使用符號作爲更少的變量?

.flex(@grow:1,@shrink:1,@basis:auto){ 
 
\t flex-grow:@grow; 
 
\t flex-shrink:@shrink; 
 
\t flex-basis:@basis; 
 
}

關於 「秩序」 和 「對齊」,我想用一個符號預變種,就像:

//function====================== 
 
.flex(@order){ 
 
\t @number:replace(@order,#,); 
 
\t order:@number; 
 
} 
 

 

 
//usage====================== 
 
.test{ 
 
    .flex(#2); 
 
} 
 

 
//result====================== 
 
.test{ 
 
    order:2; 
 
}

如何實現這一點? 非常感謝。

+0

@七階段-MAX – iRuxu

+1

爲什麼你寫的'.flex(#2)'如果你可以寫'.flex(2)'? – Justinas

+0

我已經使用另一個功能,第一個。 @Justinas – iRuxu

回答

1

如果我正確地理解了這一點,似乎您想要將兩個mixin合併爲一個,並且您使用#來定義您正在設置order而不是grow

如果您需要使用#,你可以將其格式化爲一個字符串,並使用mixin的後衛,像這樣:

.flex (@grow: 1, @shrink: 1, @basis: auto) when (isnumber(@grow)) { 
    flex-grow: @grow; 
    flex-shrink: @shrink; 
    flex-basis: @basis; 
} 

.flex (@order) when (isstring(@order)) { 
    @number: replace(@order,'#',''); 
    order: ~'@{number}'; 
} 

然後用混入像往常一樣在頂部,當你想設置的順序,把它寫成:

.test { 
    .flex('#2'); 
} 
+0

是的,但參數應該添加引號符號。謝謝很多 – iRuxu

+0

@iRuxu所以這只是輸入字符的數量?只需要'.flex('#2')'而不是'.flex-order(2)'或'.flex-n(2)'?那麼'.f(2)'怎麼樣? –