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

ドットレスではバックティックが機能していないようです。出力に「[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 に答える