7

尝试将以下 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...
}
4

2 回答 2

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 使用指南了解更多信息。

于 2011-05-11T22:09:50.463 回答
2

反引号似乎并没有在 dotless 中工作。您将在输出中得到“[script unsupported]”。我想出在 dotless 中解决 cos/sin 问题的方法是实现函数扩展。您可以在此处查看函数扩展的示例:https ://groups.google.com/forum/?fromgroups=#!topic/dotless/3fVydO8mTHw 。Wouter Boevink 有一个关于在 Asp.Net 中进行配置的问题,他自己在讨论中进一步回答了这个问题。另请查看 dotless.Core.Parser.Functions.AbsFunction 的实现,了解如何实现简单的数值函数。

于 2012-11-08T15:03:11.130 回答