尝试转换以下php方法以在.less样式表中使用:
<?php
$deg2radians = pi() * 2 / 360;
$rad = $degree * $deg2radians;
$costheta = cos($rad);
$sintheta = sin($rad);
?>
在Less中,我如何在不使用特定于语言的cos()/ sin()函数的情况下实现正弦/余弦方法?
.rotate(@deg) {
// css transform capable browsers properties...
// IE <= 8
@deg2radians: 3.1416 * 2 / 360;
@rad: @degree * @deg2radians;
@sintheta: sin(@rad); // How to sin()?
@costheta: cos(@rad); // How to cos()?
// filter: transform matrix method...
}
答案 0 :(得分:9)
嗯,它不是完全独立于语言,但由于它只是Javascript,它应该适用于所有LESS实现,除非我没有清楚地考虑这一点。
话虽如此,您可以使用Javascript来计算正弦和余弦:
.rotate(@deg) {
// css transform capable browsers properties...
// IE <= 8
@deg2radians: 3.1416 * 2 / 360;
@rad: @degree * @deg2radians;
@sintheta: ~`Math.sin(@{rad})`;
@costheta: ~`Math.cos(@{rad})`;
// filter: transform matrix method...
}
反引号用于评估Javascript,您也可以实际访问DOM。例如,完全允许以下内容:
`document.write('Hello!')`
波浪号用于转义,@ {}表示变量插值。例如:
@input: 10;
`document.write(Math.sin(@{input}))`;
查看LESS usage guide了解详情。
答案 1 :(得分:2)
Back-ticks似乎没有无效的工作。您将在输出中获得“[script unsupported]”。我想出解决无点的cos / sin问题的方法是实现函数扩展。您可以在此处查看功能扩展的示例:https://groups.google.com/forum/?fromgroups=#!topic/dotless/3fVydO8mTHw。 Wouter Boevink在Asp.Net中有一个问题,他自己在讨论中进一步回答。另请参阅dotless.Core.Parser.Functions.AbsFunction的实现,以了解如何实现简单的数字函数。