オリジナル・アナログ時計

先ごろ「ブログパーツのアナログ時計が大きすぎるので小さくしたい」という質問があったが、ブログパーツは <script /> で提供されるので、時計というような場合、カスタマイズできることにならない。

無論昔も今も Flash で作成するのがオーソドックスな方法。
最近は javascript でも jQuery を用いればカンタンにできるようにはなった。
それでも、文字盤や針は自分で用意しなければならない。

jquery.Rotate.js を用いる方法もあるが、jQuery 本体があれば、僅か 30 行 1.2kb 程度の javascript と CSS で実現できる。
レンタルの無料ブログで試してみた。

参考にした講座は CSS-TRICKS
ところが、 0 秒になると分針がカクッと移動する。 それでは面白くないので、 ない頭を絞ってトライしたが、存外カンタンであった。

        $(document).ready(function() {
         
              setInterval( function() {
              var seconds = new Date().getSeconds();
              var sdegree = seconds * 6;
              var srotate = "rotate(" + sdegree + "deg)";

              $("#sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});
              }, 1000 );
         
              setInterval( function() {
              var hours = new Date().getHours();
              var mins = new Date().getMinutes();
              var hdegree = hours * 30 + (mins / 2);
              var hrotate = "rotate(" + hdegree + "deg)";
              
              $("#hour").css({"-moz-transform" : hrotate, "-webkit-transform" : hrotate});
              }, 1000 );
        
              setInterval( function() {
              var mins = new Date().getMinutes();
              var seconds = new Date().getSeconds(); // added var seconds
              var mdegree = mins * 6 + (seconds / 10); // added seconds count
              var mrotate = "rotate(" + mdegree + "deg)";
              
              $("#min").css({"-moz-transform" : mrotate, "-webkit-transform" : mrotate});
              }, 1000 );
       }); 

CSS はヘッダーに重ねるために #header の position 値を relative にし、 #clock の position 値は absolute にした。

ヘッダーに重ねたアナログ時計

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です