<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        canvas與JS實現動態時鐘動畫

        來源:懂視網 責編:小采 時間:2020-11-27 19:54:24
        文檔

        canvas與JS實現動態時鐘動畫

        canvas與JS實現動態時鐘動畫:這次給大家帶來canvas與JS實現動態時鐘動畫,canvas與JS實現動態時鐘動畫的注意事項有哪些,下面就是實戰案例,一起來看一下。 先來看看運行效果: 完整實例代碼:<!DOCTYPE html> <html> <head lang="en&quo
        推薦度:
        導讀canvas與JS實現動態時鐘動畫:這次給大家帶來canvas與JS實現動態時鐘動畫,canvas與JS實現動態時鐘動畫的注意事項有哪些,下面就是實戰案例,一起來看一下。 先來看看運行效果: 完整實例代碼:<!DOCTYPE html> <html> <head lang="en&quo

        這次給大家帶來canvas與JS實現動態時鐘動畫,canvas與JS實現動態時鐘動畫的注意事項有哪些,下面就是實戰案例,一起來看一下。

        先來看看運行效果:

        QQ截圖20180417170436.png

        完整實例代碼:

        <!DOCTYPE html>
        <html>
        <head lang="en">
         <meta charset="UTF-8">
         <title>canvas時鐘</title>
         <style>
         canvas {
         border: 1px solid red;
         }
         </style>
        </head>
        <body>
        <canvas width="800" height="600"></canvas>
        </body>
        <script>
         function Clock(opt) {
         for (var key in opt) {
         this[key] = opt[key];
         }
         this.init();
         }
         Clock.prototype = {
         init: function () {
         var self = this;
         var ctx = this.ctx;
         this.timer = setInterval(function(){
         ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
         self.drawDial();
         self.drawDegreeScale();
         self.drawNumber();
         self.drawPointers();
         },1000);
         },
         drawDial: function () {
         var ctx = this.ctx;
         ctx.save();
         ctx.beginPath();
         ctx.lineWidth = this.clockDialW;
         ctx.strokeStyle = this.clockDialColor;
         ctx.arc(this.clockX, this.clockY, this.clockRadius, 0, 2 * Math.PI);
         ctx.stroke();
         ctx.restore();
         },
         drawDegreeScale: function () {
         var ctx = this.ctx;
         var clockRadius = this.clockRadius;
         var clockX = this.clockX;
         var clockY = this.clockY;
         var bigDegreeScaleL = this.bigDegreeScaleL;
         var smallDegreeScale = this.smallDegreeScale;
         var startX, startY, endX, endY, radian;
         ctx.save();
         for (var i = 0; i < 12; i++) {
         radian = i * Math.PI / 6;
         endX = clockX + clockRadius * Math.cos(radian);
         endY = clockY + clockRadius * Math.sin(radian);
         if (radian % (Math.PI / 2) == 0) {
         startX = clockX + (clockRadius - bigDegreeScaleL) * Math.cos(radian);
         startY = clockY + (clockRadius - bigDegreeScaleL) * Math.sin(radian);
         ctx.lineWidth = this.bigDCWidth;
         } else {
         startX = clockX + (clockRadius - smallDegreeScale) * Math.cos(radian);
         startY = clockY + (clockRadius - smallDegreeScale) * Math.sin(radian);
         ctx.lineWidth = this.smallDCWidth;
         }
         ctx.beginPath();
         ctx.moveTo(startX, startY);
         ctx.lineTo(endX, endY);
         ctx.stroke();
         ctx.restore();
         }
         },
         drawNumber: function () {
         var ctx = this.ctx;
         var textX, textY, textRadian;
         var clockX = this.clockX;
         var clockY = this.clockY;
         var clockRadius = this.clockRadius;
         ctx.font = '20px 微軟雅黑';
         ctx.fillStyle = 'red';
         ctx.textAlign = 'center';
         ctx.textBaseline = 'middle';
         ctx.save();
         for (var i = 0; i < 12; i++) {
         textRadian = i * Math.PI / 6 - Math.PI/3;
         textX = clockX + (clockRadius - 40) * Math.cos(textRadian);
         textY = clockY + (clockRadius - 40) * Math.sin(textRadian);
         ctx.beginPath();
         ctx.fillText(i + 1, textX, textY);
         }
         ctx.restore();
         },
         drawPointers: function () {
         var date = new Date();
         var h = date.getHours();
         var m = date.getMinutes();
         var s = date.getSeconds();
         h = h % 12;
         var hRadian = 2 * Math.PI / 12 * h - Math.PI / 2;
         this.drawPoint(hRadian,30,'red',8);
         var mRadian = 2 * Math.PI / 60 * m - Math.PI / 2;
         this.drawPoint(mRadian,50,'blue',6);
         var sRadian = 2 * Math.PI / 60 * s - Math.PI / 2;
         this.drawPoint(sRadian,70,'green',2);
         },
         drawPoint: function (radian, length,color,lineWidth) {
         var x = this.clockX + Math.cos(radian) * length;
         var y = this.clockY + Math.sin(radian) *?length;
         var ctx = this.ctx;
         ctx.save();
         ctx.beginPath();
         ctx.strokeStyle = color;
         ctx.lineWidth = lineWidth;
         ctx.moveTo(this.clockX,this.clockY);
         ctx.lineTo(x,y);
         ctx.stroke();
         ctx.restore();
         }
         };
        </script>
        <script>
         var canvas = document.querySelector('canvas');
         var ctx = canvas.getContext('2d');
         var clock = new Clock({
         ctx: this.ctx,
         clockRadius: 150,
         clockX: 300,
         clockY: 300,
         clockDialW: 6,
         clockDialColor: 'blue',
         bigDegreeScaleL: 20,
         bigDCWidth: 6,
         smallDegreeScale: 10,
         smallDCWidth: 4
         });
        </script>
        </html>

        相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!

        推薦閱讀:

        優化頁面加載速度插件InstantClick

        預加載InstantClick使用詳解

        InstantClick怎么設置才能兼容MathJax與百度統計等

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        canvas與JS實現動態時鐘動畫

        canvas與JS實現動態時鐘動畫:這次給大家帶來canvas與JS實現動態時鐘動畫,canvas與JS實現動態時鐘動畫的注意事項有哪些,下面就是實戰案例,一起來看一下。 先來看看運行效果: 完整實例代碼:<!DOCTYPE html> <html> <head lang="en&quo
        推薦度:
        標簽: 動畫 js 動態時鐘
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产免费综合| 羞羞视频免费网站日本| ww4545四虎永久免费地址| 亚洲αv在线精品糸列| 少妇性饥渴无码A区免费 | 亚洲A∨精品一区二区三区下载| 动漫黄网站免费永久在线观看| 亚洲精品国产成人中文| 成人黄色免费网站| 亚洲中文字幕无码久久| 日韩免费视频在线观看| 黄色三级三级免费看| 中文字幕亚洲综合久久菠萝蜜 | 88xx成人永久免费观看| 亚洲无圣光一区二区| 免费人成视频在线| 男男gvh肉在线观看免费| 中文字幕亚洲专区| 无码专区AAAAAA免费视频| 亚洲国产日韩在线人成下载| 性感美女视频在线观看免费精品| 久久精品国产亚洲AV电影网| 亚洲色偷拍区另类无码专区| 免费观看在线禁片| 77777午夜亚洲| 亚洲精品人成无码中文毛片| 中文精品人人永久免费 | 免费一级毛片女人图片| 黄桃AV无码免费一区二区三区| 亚洲人成亚洲精品| 精品久久久久久久免费人妻| 国产精品免费在线播放| 亚洲黄色网址在线观看| 久久亚洲精品国产精品| 成年性羞羞视频免费观看无限| 黄色毛片免费观看| 亚洲国产综合人成综合网站00| 国产做床爱无遮挡免费视频| 亚洲日韩国产一区二区三区在线| 97碰公开在线观看免费视频| 黄页免费视频播放在线播放|