日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

js基于canvas實現時鐘組件

瀏覽:200日期:2024-04-05 18:24:06

canvas一直是前端開發中不可或缺的一種用來繪制圖形的標簽元素,比如壓縮上傳的圖片、比如刮刮卡、比如制作海報、圖表插件等,很多人在面試的過程中也會被問到有沒有接觸過canvas圖形繪制。

定義

canvas元素用于圖形的繪制,通過腳本 (通常是JavaScript)來完成。canvas標簽只是圖形容器,您必須使用腳本來繪制圖形。

瀏覽器支持

Internet Explorer 9、Firefox、Opera、Chrome 和 Safari 支持

那么本篇文章就通過一個時鐘組件來熟悉使用一下關于canvas的api。

<!DOCTYPE html><html><head><meta charset='UTF-8' /><title>canvas時鐘</title><style>*{margin:0;padding:0;}body{text-align:center;padding-top:100px;}</style></head><body><canvas height='200px'></canvas><script>(function(win){function DrawClock(options){this.canvas = options.el;this.ctx = this.canvas.getContext(’2d’);//方法返回一個用于在畫布上繪圖的環境this.width = this.ctx.canvas.width;this.height = this.ctx.canvas.height;this.r = this.width / 2;this.rem = this.width / 200;this.digits = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2]; var self = this; self.init(); setInterval(function(){ self.init(); }, 1000);}DrawClock.prototype = {init: function(){var ctx = this.ctx;ctx.clearRect(0, 0, this.width, this.height); //在給定的矩形內清除指定的像素var now = new Date();var hours = now.getHours();var minutes = now.getMinutes();var seconds = now.getSeconds();var hour = hours >= 12 ? hours - 12 : hours;var minute = minutes + seconds / 60;this.drawBackground();this.drawHour(hour, minute);this.drawMinute(minute);this.drawSecond(seconds);this.drawDot();ctx.restore();},drawBackground: function(){var ctx = this.ctx;var self = this;ctx.save();ctx.translate(this.r, this.r); //重新映射畫布上的 (0,0) 位置ctx.beginPath();ctx.lineWidth = 8 * this.rem;ctx.arc(0, 0, this.r - ctx.lineWidth / 2, 0, 2 * Math.PI, false); //創建弧/曲線(用于創建圓形或部分圓)ctx.stroke();ctx.font = 16 * this.rem + 'px Arial';//設置或返回文本內容的當前字體屬性ctx.textAlign = 'center'; //設置或返回文本內容的當前對齊方式ctx.textBaseline = 'middle'; //設置或返回在繪制文本時使用的當前文本基線this.digits.forEach(function(number, i){var rad = 2 * Math.PI / 12 * i;var x = Math.cos(rad) * (self.r - 33 * self.rem);var y = Math.sin(rad) * (self.r - 33 * self.rem);ctx.fillText(number, x, y); //在畫布上繪制'被填充的'文本});//分鐘的刻度,每分鐘轉6degfor (var i = 0; i < 60; i++){ctx.save(); //保存當前環境的狀態ctx.rotate(6 * i * Math.PI / 180); //旋轉當前繪圖ctx.beginPath(); //起始一條路徑,或重置當前路徑ctx.moveTo(0, -82 * this.rem); //把路徑移動到畫布中的指定點,不創建線條ctx.lineTo(0, -87 * this.rem); //添加一個新點,然后在畫布中創建從該點到最后指定點的線條ctx.closePath(); //創建從當前點回到起始點的路徑ctx.strokeStyle = ’#000’; //設置或返回用于筆觸的顏色、漸變或模式ctx.lineWidth = 1 * this.rem; //設置或返回當前的線條寬度ctx.stroke(); //繪制已定義的路徑ctx.restore(); //返回之前保存過的路徑狀態和屬性}//小時的刻度,每小時轉30degfor (var i = 0; i < 12; i++){ctx.save();ctx.rotate(30 * i * Math.PI / 180);ctx.beginPath();ctx.moveTo(0, -79 * this.rem);ctx.lineTo(0, -87 * this.rem);ctx.closePath();ctx.strokeStyle = ’#000’;ctx.lineWidth = 2 * this.rem;ctx.stroke();ctx.restore();}},drawHour: function(hour, minute){var ctx = this.ctx;ctx.save();ctx.beginPath();var hRad = 2 * Math.PI / 12 * hour;var mRad = 2 * Math.PI / 12 / 60 * minute;ctx.rotate(hRad + mRad);ctx.lineWidth = 6 * this.rem;ctx.lineCap = 'round'; //設置或返回線條的結束端點樣式ctx.moveTo(0, 10 * this.rem);ctx.lineTo(0, -this.r / 2);ctx.stroke();ctx.restore();},drawMinute: function(minute){var ctx = this.ctx;ctx.save();ctx.beginPath();var rad = 2 * Math.PI / 60 * minute;ctx.rotate(rad);ctx.lineWidth = 3 * this.rem;ctx.lineCap = 'round';ctx.moveTo(0, 10 * this.rem);ctx.lineTo(0, -this.r + 26 * this.rem);ctx.stroke();ctx.restore();},drawSecond: function(second){var ctx = this.ctx;ctx.save();ctx.beginPath();ctx.fillStyle = '#c14543';var rad = 2 * Math.PI / 60 * second;ctx.rotate(rad);ctx.moveTo(-3 * this.rem, 20 * this.rem);ctx.lineTo(3 * this.rem, 20 * this.rem);ctx.lineTo(1, -this.r + 26 * this.rem);ctx.lineTo(-1, -this.r + 26 * this.rem);ctx.fill(); //填充當前繪圖(路徑)ctx.restore();},drawDot: function(minute){var ctx = this.ctx;ctx.beginPath();ctx.fillStyle = '#fff';ctx.arc(0, 0, 3 * this.rem, 0, 2 * Math.PI, false);ctx.fill();}}; win.DrawClock = DrawClock;})(window);new DrawClock({el: document.getElementById('clock')});</script></body></html>

只要心中有丘壑,就能耕出二畝田!canvas時鐘用到了canvas中大部分的api,通過學習canvas時鐘的代碼實現,很能了解canvas的屬性和方法,同時,實現時鐘效果時,用到了數學中的幾何模型正弦sin和余弦cos以及弧度的計算方法,又重溫了一把當年學數學時的許多樂趣,可謂是一舉兩得。

時鐘效果圖如下:

js基于canvas實現時鐘組件

以上就是js基于canvas實現時鐘組件的詳細內容,更多關于canvas實現時鐘組件的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲毛片在线免费| 亚洲午夜黄色| 亚洲不卡视频| 日本午夜精品一区二区三区电影| 欧美一级一区| 美腿丝袜在线亚洲一区| 国产美女久久| 日韩精品永久网址| 国产高清久久| 日本午夜免费一区二区| 亚洲一二av| 欧美日韩在线精品一区二区三区激情综合| 日韩三级视频| 精品入口麻豆88视频| 伊人久久高清| 亚洲aa在线| 青青草国产成人99久久| 给我免费播放日韩视频| 日韩精品影视| 亚洲免费高清| 日韩精品高清不卡| 欧美激情综合| 极品日韩av| 日韩黄色免费网站| 国产一区二区三区91| av一区在线| 婷婷精品在线观看| 欧美成人精品三级网站| 快she精品国产999| 国产aa精品| 蜜桃视频在线观看一区| 精品一区二区三区中文字幕| 久久久久.com| 国产日韩欧美中文在线| 久久蜜桃av| 国产精品日韩精品中文字幕| 欧美日韩高清| 精品日韩在线| 综合激情一区| 欧美丝袜一区| 日韩成人精品一区二区三区| 成人亚洲一区二区| 视频一区中文字幕精品| 国产精品成人a在线观看| 亚洲日本欧美| 成人自拍av| 欧美日韩伊人| 精品一区亚洲| 欧美精品不卡| 美女精品一区| 国产成人黄色| 欧美亚洲tv| 国产一在线精品一区在线观看| 国产欧美久久一区二区三区| 在线亚洲自拍| 鲁大师精品99久久久| 亚洲男人在线| 在线亚洲免费| 色爱av综合网| 成人日韩av| 国产精品白丝一区二区三区| 老司机精品久久| 欧美+日本+国产+在线a∨观看| 久久精品九色| 国产精品网址| 91亚洲精品在看在线观看高清| 欧美日韩国产综合网| 日韩免费一区| 福利视频一区| 久久精品理论片| 国产精品免费大片| 日韩黄色免费网站| 伊人久久大香伊蕉在人线观看热v| 欧美丝袜一区| 久久久久蜜桃| 亲子伦视频一区二区三区| 天堂√8在线中文| 久久精品国产一区二区| 国产精品一页| 国产精品激情| 麻豆久久久久久| 久久不卡国产精品一区二区| 欧美亚洲免费| 日韩精品一区二区三区中文| 蜜桃av一区二区在线观看| 欧美特黄一区| 午夜免费一区| 亚洲欧美日韩国产综合精品二区| 亚洲国产一区二区三区在线播放 | 国产福利91精品一区二区| 国产精品亚洲片在线播放| 国产精品久久久久9999高清| 国产精品久av福利在线观看| 久久国产欧美日韩精品| 国产探花一区在线观看| 国产麻豆一区| 激情综合五月| 五月激情久久| 日韩欧美一区二区三区免费看| 欧洲精品一区二区三区| 激情综合网五月| 亚洲尤物在线| 日韩精品高清不卡| 国产精品一区二区三区美女 | 欧美久久一区二区三区| 日本成人中文字幕| 国产精品毛片久久久| 欧美激情视频一区二区三区免费 | 午夜国产欧美理论在线播放| 欧美网站在线| 99视频在线精品国自产拍免费观看| 99香蕉国产精品偷在线观看 | 国产精品久久久久久久免费软件| 欧美精品aa| 日本不良网站在线观看| 久久九九精品| 丝袜国产日韩另类美女| 欧美私人啪啪vps| 91嫩草亚洲精品| 伊人久久亚洲热| 欧美一区精品| 色婷婷狠狠五月综合天色拍| 亚洲一区二区三区中文字幕在线观看| 日本三级亚洲精品| 超碰超碰人人人人精品| 久久青青视频| 首页国产欧美久久| 精品一区二区三区中文字幕视频 | 国产日韩综合| 国产精品久久久一区二区| 91亚洲国产高清| 香蕉久久夜色精品国产| 欧美日韩1区| 日韩av专区| 日韩中文字幕91| 成人在线免费观看91| 亚洲一区区二区| 激情中国色综合| 夜久久久久久| 荡女精品导航| 日韩中文字幕亚洲一区二区va在线| 国产精品成人自拍| 亚洲精品99| 欧美aa在线视频| 国产女优一区| 97人人精品| 日韩精品一区二区三区中文在线 | 日韩电影免费在线观看| 蜜臀av亚洲一区中文字幕| 国产精品伦理久久久久久| 中文字幕一区二区精品区| av资源中文在线| 深夜日韩欧美| 欧美日韩在线二区| 国产精品jk白丝蜜臀av小说| 国产美女精品| 日韩精品永久网址| 日韩二区三区四区| 久久九九国产| 精品中国亚洲| 91伊人久久| 亚洲一区二区成人| 综合日韩av| 你懂的国产精品永久在线| 石原莉奈在线亚洲三区| 夜鲁夜鲁夜鲁视频在线播放| 国产三级精品三级在线观看国产| 中国女人久久久| 国产精品亚洲产品| 热久久国产精品| 欧美日韩精品免费观看视欧美高清免费大片| 日本成人手机在线| 91久久午夜| 国产精品美女午夜爽爽| 亚洲精品888| 天堂成人国产精品一区| 少妇久久久久| 97精品在线| 国产激情综合| 久久国产福利| 97精品国产一区二区三区| 国产精品毛片在线看| 国产精品亚洲一区二区三区在线观看| 国产精品极品| 亚洲精品无吗| 欧美另类综合| 色88888久久久久久影院| 国产v日韩v欧美v| 91嫩草精品| 免费成人性网站| 日韩中文字幕一区二区三区| 六月天综合网| 国产一区二区精品| 亚洲午夜在线| 欧美a级一区| 98精品久久久久久久| 欧美黄页在线免费观看| 国产欧美亚洲一区| 日欧美一区二区| 亚洲视频二区|