HOME > >

Spin.js

ローディングアニメーションを画像無し、CSSなし、外部ライブラリなしで作成できるライブラリ。jQueryのプラグインとして利用することも可能。

使い方

外部のライブラリやファイルを必要としないのでspin.jsを読み込むだけです。

HTML

  1.  
  2. <script type="text/javascript" src="spin.min.js"></script>
  3.  

サンプル

実行結果

Javascript

  1. $(function(){
  2.     // アニメーションの設定
  3.     // 以下はデフォルト値
  4.     var opts = {
  5.       lines:   12,    // 回転する線の本数
  6.       length:  7,     // 線の長さ
  7.       width:   4,     // 線の太さ
  8.       radius:  10,    // 線の丸み
  9.       color: ' #000', // 線の色 #rgb or #rrggbb
  10.       speed:   1,     // 1回転に要する時間 秒
  11.       trail:   60,    // Afterglow percentage
  12.       shadow:  false, // 線に影を付ける場合、true
  13.       hwaccel: false  // Whether to use hardware acceleration
  14.     };
  15.    
  16.     // アニメーションを挿入する要素
  17.     var target = $('.spintest')
  18.                  .css({
  19.                     height : 200,
  20.                     width  : 200,
  21.                     border : '1px solid #000000',
  22.                     padding: 10
  23.                  })
  24.                  .get(0);
  25.    
  26.     // 実行
  27.     var spinner = new Spinner(opts).spin(target);
  28. });

HTML

  1.  
  2. <div class="spintest">
  3.  
  4. </div>
  5.  

spin()メソッドで実行

隠しオプション?

ソースみると

javascript

  1.  
  2.   defaults = Spinner.defaults = {
  3.     lines: 12, // The number of lines to draw
  4.     length: 7, // The length of each line
  5.     width: 5, // The line thickness
  6.     radius: 10, // The radius of the inner circle
  7.     color: '#000', // #rgb or #rrggbb
  8.     speed: 1, // Rounds per second
  9.     trail: 100, // Afterglow percentage
  10.     opacity: 1/4,
  11.     fps: 20
  12.   },
  13.  

となっている。opacityとfpsも非公式っぽいが設定できる。 opacityは前後の線の透明度の差。この値を1にするとアニメーションしなくなる。

実際回転させてるわけでなく、線の色を順番に変化させることで動いてるように見せる カラーアニメーションって手法みたいですね。

いい教材になりそうです。

サンプル

上はopacityの値を1にした場合。

実行結果


Javascript

  1. $(function(){
  2.     var targets = $('.spintest2 p').css({height: 100});
  3.     new Spinner({opacity: 1}).spin(targets.get(0));
  4.     new Spinner().spin(targets.get(1));
  5. });

HTML

  1.  
  2. <div class="spintest2">
  3. <p></p>
  4. <hr />
  5. <p></p>
  6. </div>
  7.  

アニメーションの停止と再開

アニメーションを停止するにはstop()を利用する。stop()を実行した場合、DOMから削除されるので再開する場合は再度、DOMへ挿入してspin()をコールする必要がある模様。

サンプル

実行結果

Javascript

  1. $(function(){
  2.     var target = $('.spintest3').css({height: 100});
  3.    
  4.     var spin = new Spinner().spin(target.get(0));
  5.    
  6.     $(':button', '.spintest3').toggle(function(){
  7.         spin.spin();
  8.     }, function(){
  9.         spin.spin(target.get(0));
  10.     });
  11. });

HTML

  1.  
  2. <div class="spintest3">
  3.     <button>一時停止/再開</button>
  4. </div>
  5.  

参照サイト