ここで注意が必要なのは(指摘してくれたAnthony Millsのおかげで)270から360への移行です。単純に0に戻すことはできず、360、450などに移動する必要があります。したがって、現在の角度をとる必要があります。常に90を追加します。
プロパティから現在の角度を取得しtransform
てそれに90を追加しようとしても、変換はブラウザによってマトリックスとして保存され、マトリックスから角度をリバースエンジニアリングする必要があるため、これには価値がありません(それほど難しくありません)。それを行うためのスクリプトがありますが、なぜわざわざするのですか?)
代わりに、N、E、W、S(北、東、西、南)を使用して状態を示します。これにより、文字がどこから来ているかがわかります。デフォルトはNになるので、...
<a href="#" id="line" class="N" data-turns="0">|</a>
そして、jQueryを少し。クラスを使用して現在の角度を計算するので、から行列を逆にする必要はありませんtransform
。
$('#line').click(function() {
var rot = 360 * $(this).attr('data-turns');
switch ($(this).attr('class'))
{
case 'N':
rot += 0;
$(this).removeClass('N').addClass('E');
break;
case 'E':
rot += 90;
$(this).removeClass('E').addClass('S');
break;
case 'S':
rot += 180;
$(this).removeClass('S').addClass('W');
break;
case 'W':
rot += 360;
$(this).attr('data-turns', $(this).attr('data-turns') + 1);
$(this).removeClass('W').addClass('N');
break;
default:
$(this).attr('class', 'N');
}
$(this).css('transform', 'rotate('+rot+'deg)');
});
これは、でクラスを使用していない場合にのみ機能することに注意してください#line
。使用している場合は、withの代わりに//withを使用する必要がif
あります。実際、この情報を格納するためにクラスよりも使用する方がおそらく優れたフィールドがあります(たとえば、HTML5フィールド)。CSSとjQueryを作成する方が速くて簡単だったので、クラスを使用しました。else if
else
hasClass()
switch
attr('class')
data-
編集:回転が完了するようN2
にオプションに追加されました。toトランジションが希望どおりに回転する360deg
かどうかは100%わかりません。これについて言及してくれたAnthonyMillsに感謝します。N2
E
data-
EDIT2:CSSスタイルを完全に削除し、クラスと特定のフィールド、つまり。に基づいて正しい回転を計算するように切り替えましたdata-turns
。