如何用Less计算正弦,余弦?

时间:2011-05-11 21:51:20

标签: css math less cosine sine

尝试转换以下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...
}

2 个答案:

答案 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的实现,以了解如何实现简单的数字函数。