在less函数中评估一段javascript代码

时间:2013-11-20 09:16:52

标签: javascript less

有没有办法在less函数中评估一段javascript代码?

示例:

contrast((function(){return something}()))

先谢谢你,伙计们!

3 个答案:

答案 0 :(得分:1)

是的,但您必须将其编译为client-side 你需要链接

<link rel="stylesheet/less" type="text/css" href="styles.less" />

<script src="less.js" type="text/javascript"></script>

到你的页面。

Javascript Evaluation section向您展示如何完成您想要做的事情。

例如:

@var: `"hello".toUpperCase() + '!'`;

答案 1 :(得分:1)

简答,是

例如,这个相当无意义的代码适用于http://less2css.org/

@color: '#ff0000';

.test {
  color: contrast(color(`function(){return @{color}}()`));
}

你只需要后面的刻度标记(`)就可以在LESS中进行javascript评估。但是,当输出到LESS函数时,您需要注意所有都是LESS期望的。所以在我上面的例子中,我需要确保函数返回一个字符串,然后通过color()函数将其转换为LESS中的颜色对象,contrast()函数是@color函数的对象类型期待。

#ff0000直接设置为不带引号的{{1}}颜色值不起作用,因为它会引发javascript错误。因此,在将javascript与LESS集成时,需要注意一些“挑剔”的方面,但它完全有可能。

答案 2 :(得分:0)

以下是如何在简单表达式中使用三元运算符

// add extra width if @miniPlayButton is true
@extraWidth: ~`('@{miniPlayButton}' == 'true' ? 2 : 0)`;

width: 2em + unit(@extraWidth, em);

请记住常规Javascript并不了解像em这样的单位,所以我觉得这样做更容易(也更清晰)。

如果对类似的简单食谱有更好的参考&#39;请发布。

我正在使用.NET BundleTransformer运行此服务器端。需要添加javasriptEnabled,否则会收到错误消息&#34;语法 消息:您正在使用已被禁用的JavaScript。&#34;

  <less useNativeMinification="false" ieCompat="true" strictMath="false" strictUnits="false" dumpLineNumbers="None" 
        javascriptEnabled="true" >
    <jsEngine name="MsieJsEngine" />
  </less>