2012-09-22 39 views
2

我試圖用多個使用Bootstrap CSS的配色方案創建CSS主題。每種顏色方案均構建爲boostrap.less文件的修改版本:bootstrap-red.lessbootstrap-green.less,依此類推。在Less CSS中定義跨文件的變量

每個Bootstrap版本所做的是導入所有默認的Bootstrap文件,然後導入適當的調色板,然後導入主題的核心結構。例如,bootstrap-red.less

@import "reset.less"; 
@import "variables.less"; 
@import "mixins.less"; 

/* and so on... until */ 

// Custom code 
@import "elements.less"; 
@import "_mytheme-color-scheme-red.less"; 
@import "_mytheme-core.less"; 

_mytheme-color-scheme-red.less,我定義的變量,如:

@bannerBackground: #59a449; 

然而,編譯bootstrap-red.less當我得到:

NameError: variable @bannerBackground is undefined in /.../css/less/_mytheme-core.less 

爲什麼會出現這種情況?我原以爲它會起作用,因爲variables.less文件中的變量以相同的方式定義,並且可以在後續文件中使用它們。

我看過類似的問題,並嘗試不同的東西,但無濟於事:

  • @import文件_mytheme-core.less在荷蘭國際集團"_mytheme-color-scheme-red.less" - 不可行的;另外,Bootstrap不會這樣做,但它仍然有效。
  • 對沒有BOM的UTF-8文件進行編碼 - 沒有工作,結果相同。

在我看來,文件_mytheme-color-scheme-red.less根本沒有被處理。這就好像Less編譯器只是跳過它並直接去找_mytheme-core.less我該如何解決這個問題?

+0

這聽起來像我的LESS經驗,至少在使用SimpLESS進行編譯時是如此。我切換預處理器的原因之一。通過mixin傳遞變量不是一個選項嗎? – cimmanon

+1

你正在使用哪種編譯方法?你有沒有嘗試在'variables.less'後面導入你的變量? – Sherbrow

+0

@Sherbrow我現在試過了,結果是一樣的。我真的不明白它,它總是*跳過我的變量文件,無論如何。 – jSepia

回答

0

固定。問題畢竟是編碼:LESS編譯器正在跳過所有錯誤編碼的文件。顯然,即使您告訴它,崇高文本也不會正確保存到沒有BOM的UTF-8;我的文件全部採用ANSI或UTF-8 ,採用 BOM。我不得不求助於記事本++,以便將它們轉換爲普通的UTF-8。我現在感到很蠢。

來源:Variable Name Error "is undefined" even though "variables.less" imported

0

我有LessCss 2.X類似的錯誤時,編譯引導2,降級到1.7.5 LessCss解決對我來說。