有没有办法在less函数中评估一段javascript代码?
示例:
contrast((function(){return something}()))
先谢谢你,伙计们!
答案 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>