ホームページ >ウェブフロントエンド >htmlチュートリアル >HTML5 アプリケーション Clock_html/css_WEB-ITnose

HTML5 アプリケーション Clock_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:38:001468ブラウズ

HTML5 の Canvas API を使用すると、これまでは予期していなかったアニメーション効果を実現できます。Web ページに時計を配置したい場合は、最初に Flash ツールを使用して時計を作成する必要がありました。 、複雑な JavaScript コードを記述し、それをページの中央に読み込みます。 HTML5の登場により、ページ内で直接canvasタグを使用し、javascriptと連携して美しい時計が完成します。





今日はHTML5を使って針が動く時計を作ってみましょう。

HTML

HTML に Canvas タグを配置するだけで済みます: #クロック、幅と高さは 400 ピクセルです。

[html] プレーンコピーを表示

  1. & lt;head> ;
  2. <メタ文字セット = "utf-8" > ;
  3. HTML5 アプリケーション時計
  4. <キャンバス id="width="400" height="400" >
  5. Javascript
  6. を確認するために、まず現在の時刻を取得しましょう。ページを開くときにポインタの位置を設定し、ポイントの座標と 2 番目の角度変数を定義します。
[js]

view plaincopy



var time = new Date()

var h = time.getHours(); //時間

var m = 時間。 getMinutes( ); //分

var s = time.getSeconds(); //秒 h=h>12?(h-12)*5+parseInt(m/12):h*5+parseInt(m/) 12); //時針の初期位置

var x=200,y=200,sAngle=0; //x y 原点秒針角度変数
  1. 次に、キャンバスを使用して時計を描画します。関数draw()、スケールを描き、この関数を1回実行すると、秒針が時計回りに1/60円弧を動かします。
  2. まず、キャンバス描画オブジェクトを取得し、時計の目盛りを描画します。時計 (円) を 12 の目盛りに分割します。つまり、各目盛りが 1 時間を表します。もちろん、各目盛りが 1 分を表すように 60 の目盛りに分割することもできます。
  3. [js]
  4. plaincopy を表示


  1. functiondraw(){
  2. var c=document.getElementById(" Clock");
  3. var ctx=c.getContext("2d") // 描画オブジェクトを取得
  4. ctx.clearRect(0,0) , c.width,c.height); //最後に描いたグラフィックをクリア
  5. s++;//秒針
  6. ctx.fillStyle = '#fff' //背景色を白で塗りつぶす
  7. ctx.fillRect( 0, 0,c.width,c.height); // キャンバス領域を設定
  8. ctx.save(); // 現在の描画状態を保存
  9. // タイムスケール
  10. for(var i =0;i& lt ;12;i++){ //12 スケールを分割します
  11. var angle=(Math.PI*2)/12; //各スケールに対応するラジアンを取得します
  12. ctx.beginPath();//描画開始
  13. ctx .font="12px Arial"; //フォントを設定
  14. if(i==0||i==3||i==6||i==9){ //ポインティング時0 (12 時)、3 時、6 時、9 時の点 ctx.fillstyle = "red"; // 目盛りは赤です
  15. Radius = 4; radius 4px}} else {
  16. ctx.fillstyle = "blue" ; //スケールは青です
  17. を使う アウト アウト スルー アウトの「s」 アウトの アウト スルー アウト スルー スルー アウト スルー アウト スルーoff--to ‐‐‐ ‐‐‐ and tx.arc(x,y-100,radius,0,Math.PI* 2,true); // スケールとして円を描画します
  18. ctx.fill(); //パスを塗りつぶします
  19. transform(ctx,x,y,angle,true); // スケール分布
  20. }
  21. ctx.restore() // 最後に保存された描画状態を復元します
  22. ...
  23. ;上記のコードに従って、目盛のあるディスクを時計の文字盤として描画します。次に、関数draw()に時、分、秒のポインタの回転を書き続けます。
  24. [js]
  25. plaincopy を表示
    1. functiondraw(){
    2. ...
    3. sAngle=(Math.PI*2)/60*s; //秒
    4. //時針の回転
    5. ctx.save();ストロークスタイル = "赤";
    6. ctx.lineWidth=3;
    7. 変換(ctx,x,y,(Math.PI*2)/60*h); ; ctx.lineWidth=2;
    8. 変換(ctx, x,y,(Math.PI*2)/60*m); ();
    9. // 秒針が回転します
    10. ctx.stopStyle="#000";
    11. sj(ctx, x,y,y-80);
    12. //データの並べ替え
    13. if(s%60==0){
    14. sAngle=0,s=0,m++;
    15. if(m%12==0){ //12 分ごとに時針が 1 回転します
    16. 0)h=0;
    17. }
    18. }
    19. draw() が呼び出されるたびに、時針、分針、秒針に異なる塗りつぶしの色とポインタの太さを設定し、ポインタを描画し、円弧に従ってポインタの位置を回転します。この中でカスタム関数 trans() と pointer() を呼び出します。
    20. 関数 pointer() はポインターを描画するために使用されます。このうち、ctxはキャンバスオブジェクトを表し、x、yはポイントの座標、zはポインタヘッドの位置を表します。
    21. [js]
    22. view plaincopy
    23. function pointer(ctx,x,y,z){
    24. ctx.beginPath();
    25. ctx. moveTo(x,y);
    26. ctx.lineTo(x,z);
    27. ctx.bottom();
    28. }
    ポインタを回転するには、transform() 関数を使用します。このうち、ctxはキャンバスオブジェクトを表し、x、yはポイント座標、angleは回転角度を表します。






    [js]

    view plaincopy

    function trans(ctx,x,y,angle){ ctx.transform(Math.cos(angle), Math.sin(angle) ,
    1. -Math.sin(angle), Math.cos(angle),
    2. .cos(angle)) - y*Math.sin(angle))
    3. }
    4. 最後に、draw( ) 1 秒 (つまり 1000 ミリ秒) ごとに実行されます。

    [js]
    view plaincopy

    setInterval("draw()",1000);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。