1. ホーム
  2. js

CSS3 transformの回転角度の度数をjsで取得する方法、マトリックス解析

2022-02-12 15:16:03

もし、次のような記述でtransformの値を取得したいと思ったことがあるのなら

[javascript] を使用します。 表示プレーン コピー
  1. $(objName).css( 'トランスフォーム' );  


残念ながら、次のような行列が得られます。

[javascript] を使用します。 表示プレーン コピー
  1. <スパン 行列(a,b,c,d,e,f)  


<スパン ははは、この行列を見て、多くの人々が混乱しているが、本当に行う方法回転の角度を取得したい、ここで私はいくつかの関数を要約したものです。

[javascript] を使用します。 表示プレーン コピー
  1. /*
  2.     * 行列を解析し,0°~360°の回転角度を返します.
  3. <スパン     * a=b||-a=b,0<=deg<=180のとき
  4.     * when-a+b=180,180<=deg<=270
  5.     * a+b=180,270<=deg<=360 のとき
  6. <スパン     *
  7.     * 0<=deg<=180,deg=dのとき。
  8.     * 180<deg<=270,deg=180+c のとき。
  9.     * 270<deg<=360,deg=360-(c||d) のとき。
  10.     */
  11. 機能  getmatrix(a,b,c,d,e,f){。  
  12. ヴァル  aa=Math.round(180*Math.asin(a)/ Math.PI)です。  
  13. ヴァル  bb=Math.round(180*Math.acos(b)/ Math.PI)です。  
  14. ヴァル  cc=Math.round(180*Math.asin(c)/ Math.PI)です。  
  15. ヴァル  dd=Math.round(180*Math.acos(d)/ Math.PI)。  
  16. ヴァル  deg=0です。  
  17. もし <スパン (aa==bb||-aa==bb){。  
  18.             deg=ddです。  
  19.         } さもなければ もし <スパン (-aa+bb==180){。  
  20.             deg=180+cc;  
  21.         } さもなければ もし <スパン (aa+bb==180){。  
  22.             deg=360-cc||360-dd;  
  23.         }  
  24. 戻る  deg>=360?0:deg;  
  25. //(aa+','+bb+','+cc+','+dd) を返します。
  26.     }  

[javascript] を使用します。 表示プレーン コピー
  1. //回転

[javascript] を使用します。 表示プレーン コピー
  1. ヴァル  obj=$( '#id );  
  2.  obj.クリック( 機能 (){  
  3. ヴァル  deg=eval( 'ゲット' +obj.css( 'トランスフォーム' )); //最後の回転の度数を返す getmatrix 関数を構築します。
  4. ヴァル <スパン  step=45です。 // 1回転で何度回転するか
  5.      obj.css({. <未定義 'トランスフォーム' : 'rotate(' +(deg+step)%360+ となります。 'deg)' });  
  6.  });  

拡張リーディング


▶  ウォークスルー007