2011-11-20 53 views
3

我甚至不確定如何問這個問題。 LESS CSS框架包含幾個操作顏色的函數,我想知道如何自己調用這些函數來修改顏色。問題是,這些功能都位於另一個函數內定義的那樣:你怎麼稱呼less.js功能

(function (tree) { 
tree.functions = { 
    darken: function(color, amount){ 
     ...stuff... 
    } 
} 
} 

我非常清楚,假設變暗tree.functions的方法,但對我的生活不要」知道如何調用它,因爲它是匿名函數(函數(樹)

[編輯] 從@pradeek得到解決後,我創造了這個功能櫃面有人需要它的裏面。可以輕鬆適應所有其他的功能少了:

var lessColor = { 
/* 
|-------------------------------------------------------------------------- 
| Darken 
|-------------------------------------------------------------------------- 
*/ 
darken: function(col, val){ 
    col = col.replace(/#/g, ''); //Remove the hash 

    var color = new less.tree.Color(col); //Create a new color object 
    var amount = new less.tree.Value(val);  //Create a new amount object 
    var newRGB = less.tree.functions.darken(color, amount); //Get the new color 
    var hex = (newRGB.rgb[0] + 256 * newRGB.rgb[1] + 65536 * newRGB.rgb[2]).toString(16); 
    hex = hex.split('.', 1); //Remove everything after the decimal if it exists 

    //Add padding to the hex to make it 6 characters 
    while(hex.length < 6){ 
     hex = hex+'0'; 
    } 
    hex = '#'+hex; //Add the hash 

    return hex; //return the color 
} 
} 

而且你可以調用它像這樣:

$(this).css('background', lessColor.darken($(this).css('background'), .25); 
+0

我有同樣的問題,我想你的解決方案,但它有不同的輸出,你可以在這裏回答我的問題? http://stackoverflow.com/questions/22620519/call-less-js-function-in-javascript-has-different-output-in-compare-node – minttux

回答

3

編輯: 的變暗功能使用內置的原語。

下面介紹如何使用變暗功能

var color = new less.tree.Color([255, 255, 255], 0.5), 
    amount = new less.tree.Value(5); 
less.tree.functions.darken(color, amount); // returns a Color object 
+0

有什麼我應該做的嗎?我得到了「變暗不存在」。 less.js是第一個加載的,所以它應該在那裏。 –

+0

查看最新的答案 – pradeek

+0

真棒@pradeek謝謝!我用我使用的函數更新了第一篇文章。 –

1

看少1.7 right here未精縮代碼。

141是這樣的:

less = {}; 
tree = less.tree = {}; 

,並在全球範圍內。因此,less對象在瀏覽器中定義。

接下來,看看行1254

tree.functions = { 

darken功能在某處定義。


您可以撥打darken像這樣:

less.tree.functions.darken(color, amount); 
+0

它很接近!我在1320行獲得了「color.toHSL不是函數」。我應該在某處使用「new」關鍵字嗎?我現在正在閱讀JS對象,但目前仍然不太明白。 –

1

雖然這個答案不會告訴你如何調用less.js函數來操縱的色彩,但它確實提供了不同的方法來操縱顏色,這似乎成爲主要目標。

存在一個方便的JavaScript庫:TinyColor

TinyColor是一個用於JavaScript中顏色處理和轉換的小型快速庫。它允許多種形式的輸入,同時提供顏色轉換和其他顏色實用功能。它沒有依賴關係。

爲了加深顏色,只需

var darkenedColor = tinycolor("#f00").darken(20).toString(); // "#990000"