2014-09-04 98 views
1

我有一個較少的文件來定義一堆顏色/顏色。每個班級名稱都包含相關顏色的名稱,例如.colourOrange{..}.colourBorderOrange{..}navLeftButtOrange{..}少混色名稱被評估爲顏色/顏色

爲了使這個簡單的我有一個使用參數名稱一個mixin:顏色,並使用該因而命名類:

.completeColour(@colourName, @col) { 
[email protected]{colourName}{ 
    … 
} 
[email protected]{colourName}{ 
    … 
} 
[email protected]{colourName}{ 

... .. }}

的問題是這類的名稱被評估爲相關顏色。所以,而不是得到.leftNavButtOrange{}我得到.leftNavButt#ffa500{}在產生的CSS

有沒有辦法阻止這個編譯器參數或什麼的。基本上我不希望參數被評估,讀取,但沒有評估。我可以使用編譯器參數來做到這一點,還是需要更改名稱,以便它們不匹配myAppOrange之類的顏色或其他顏色。

+0

您是否嘗試將值放在引號內? – Harry 2014-09-04 09:20:29

+0

是的,這是我認爲會workf,但它不會編譯:我試過這個.completeColour(「橙」,@橙);和這個.completeColour('Orange',@ orange);在調用mixin的代碼中。在mixin本身,我嘗試了這一點:.colourBorder'@ {colourName}'{and this .colourBorder「@ {colourName}」{All o – Gurnard 2014-09-04 09:20:51

+1

這個'.completeColour(〜「white」,1)'應該是配偶。我剛剛嘗試過。這樣做會明確告訴編譯器該值是一個字符串而不是一種顏色。 – Harry 2014-09-04 09:22:17

回答

2

這是Less的遺留功能。目前,下面的解決方案之一可以用來克服這個顏色名稱到十六進制代碼轉換。

.completeColour(~"Orange",1); 

.completeColour(e("Orange"),1); 

這兩個選項明確地告訴編譯器傳遞的值是一個字符串,而不是一個顏色,因此較少編譯器會不會將其轉換爲相應的十六進制代碼。

來源:

  1. Less GitHub - how to avoid color name be translated into color value?
  2. Less GitHub - Compilation of named colors results in hex values being used incorrectly in interpolations

更新:從2.0.0版本開始,如果顏色是不會發生這種顏色名稱十六進制代碼轉換明確提到名稱並且沒有其他基於顏色的操作。版本2.0.0目前處於測試模式。

官方更新:V2 Upgrade Guide | 原文出處:More consistent named color variables)。