PHP & JavaScript Room :: 設置サンプル

実行結果

設置サンプル

参照:Html5 canvas loading animation effect

設置サンプルのソース

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <meta http-equiv="Content-Language" content="ja" />
      <meta http-equiv="Content-Script-Type" content="text/javascript" />
      <meta http-equiv="Content-Style-Type" content="text/css" />
      <meta http-equiv="imagetoolbar" content="no" />
       <title>設置サンプル</title>
      <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
      <!-- JS -->
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
      <script type="text/javascript">
      (function($){
          $.fn.buildspinner=function(config){
              var options={
                   size:20 /* 円の半径 */
              }
              var settings=$.extend(options, config);
              return this.each(function(i){
                 var degrees=settings.size+10;
                 var x=settings.size*5/3;
                 var y=settings.size*5/3;
                 /* canvasタグを生成してDOMに追加 */
               var canvas=document.createElement('canvas');
               $(this).append(canvas);
               /* コンテキストのリファレンスを取得 */
                var ctx=canvas.getContext("2d");
                var i=0, loops=0, degreesList=[];
               for (i=0; i < degrees; i++) {
                  degreesList.push(i);
               }
               /* カウンタリセット */
               i=0;
               // so I can kill it later
               window.canvasTimer=setInterval(draw, 1000/degrees);  
               /* canvasクリア */
               function reset() {
                  ctx.clearRect(0,0,settings.size*5,settings.size*5);
                  var left=degreesList.slice(0, 1);
                  var right=degreesList.slice(1, degreesList.length);
                  degreesList=right.concat(left);
               }
               /* canvas描画 */
               function draw() {
                  var c, s, e;
                  var d=0;
                  if (i == 0) reset();
                  /* 現在の状態をスタックの最後に追加 */
                  ctx.save();
                  /* 輪郭スタイル */
                  c=Math.floor(255/degrees*i);
                  ctx.strokeStyle='rgb(' + c + ', ' + c + ', ' + c + ')';
                  /* 線の幅 */
                  ctx.lineWidth=settings.size;
                  /* 現在のパスをリセット */
                  ctx.beginPath();
                  /* 円を描く */
                  d=degreesList[i];
                  s=Math.floor(360/degrees*(d));
                  e=Math.floor(360/degrees*(d+1)) - 1;
                  ctx.arc(x, y, settings.size, (Math.PI/180)*s, (Math.PI/180)*e, false);
                  /* 現在のストローク・スタイルを使って、サブパスに線を引く */
                  ctx.stroke();
                  /* スタックの最後の状態を抜き出し、その状態をコンテキストに復元 */
                  ctx.restore();
                  i++;
                  if (i >= degrees) i=0;
               }
            });
          };
      })(jQuery);
      $(function(){
         $("#demo5").buildspinner({size:30});
         $("#demo").buildspinner();
         $("#demo2").buildspinner({size:15});
         $("#demo3").buildspinner({size:10});
         $("#demo4").buildspinner({size:5});
      });
      </script>
      <style>
         #wrap div div {
            margin:10px;
            border:1px solid #ccc;
            width:100px; height:100px;
            overflow:hidden;
            float:left;
         }
      </style>
   <link rel="stylesheet" type="text/css" href="/common/css/example.css"></head>
   <body id='example3' class='example'><div class="ads" style="margin:32px auto;text-align:center;"></div><h1 class='h'><a href='/'>PHP &amp; JavaScript Room</a> :: 設置サンプル</h1>
<h3 class='h'>実行結果</h3>
      <div id="wrap">
         <h1>設置サンプル</h1>
         <p>参照:<a href='http://www.htmldrive.net/items/show/15/Html5-canvas-loading-animation-effect' target='_blank'>Html5 canvas loading animation effect</a></p>

<!-- CODE -->
<div class="cf">
<div id="demo5"></div>
<div id="demo"></div>
<div id="demo2"></div>
<div id="demo3"></div>
<div id="demo4"></div>
</div>
<!-- / CODE -->
      </div>
   </body>
</html>