2011-11-20 78 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"