最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript canvas實(shí)現(xiàn)文字時(shí)鐘

 更新時(shí)間:2021年01月10日 11:28:04   作者:_Adoph  
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)文字時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了canvas實(shí)現(xiàn)文字時(shí)鐘的具體代碼,供大家參考,具體內(nèi)容如下

先看看效果圖

代碼

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
</head>
<body>
 <canvas id="myCanvas" width="600" height="600">您的瀏覽器不支持canvas</canvas>
<script>
 var c=document.getElementById("myCanvas");
 var ctx=c.getContext("2d");
 ctx.translate(300,300);

 function Clock(ctx){
 this.ctx = ctx; // canvas 2d畫(huà)筆
 this.h = ''; // 小時(shí)
 this.m = ''; // 分鐘
 this.s = ''; // 秒鐘
 this.year = ''; // 年份
 this.mon = ''; // 月份
 this.da = ''; // 日期
 this.day = ''; // 星期
 this.timer = null; // 定時(shí)器

 this.numberText = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']; 
 this.H=['零點(diǎn)','一點(diǎn)','二點(diǎn)','三點(diǎn)','四點(diǎn)','五點(diǎn)','六點(diǎn)','七點(diǎn)','八點(diǎn)','九點(diǎn)','十點(diǎn)','十一點(diǎn)','十二點(diǎn)','十三點(diǎn)','十四點(diǎn)','十五點(diǎn)','十六點(diǎn)','十七點(diǎn)','十八點(diǎn)','十九點(diǎn)','二十點(diǎn)','二十一點(diǎn)','二十二點(diǎn)','二十三點(diǎn)'];
 this.M=['零分','一分','二分','三分','四分','五分','六分','七分','八分','九分','十分','十一分','十二分','十三分','十四分','十五分','十六分','十七分','十八分','十九分','二十分','二一分','二十二分','二十三分','二十四分','二十五分','二十六分','二十七分','二十八分','二十九分','三十分','三十一分','三十二分','三十三分','三十四分','三十五分','三十六分','三十七分','三十八分','三十九分','四十分','四十一分','四十二分','四十三分','四十四分','四十五分','四十六分','四十七分','四十八分','四十九分','五十分','五十一分','五十二分','五十三分','五十四分','五十五分','五十六分','五十七分','五十八分','五十九分'];
 this.S=['零秒','一秒','二秒','三秒','四秒','五秒','六秒','七秒','八秒','九秒','十秒','十一秒','十二秒','十三秒','十四秒','十五秒','十六秒','十七秒','十八秒','十九秒','二十秒','二一秒','二十二秒','二十三秒','二十四秒','二十五秒','二十六秒','二十七秒','二十八秒','二十九秒','三十秒','三十一秒','三十二秒','三十三秒','三十四秒','三十五秒','三十六秒','三十七秒','三十八秒','三十九秒','四十秒','四十一秒','四十二秒','四十三秒','四十四秒','四十五秒','四十六秒','四十七秒','四十八秒','四十九秒','五十秒','五十一秒','五十二秒','五十三秒','五十四秒','五十五秒','五十六秒','五十七秒','五十八秒','五十九秒'];
 
 this.draw = function(){
  this.ctx.clearRect(-300,-300,600,600);
  // 中心小黑圓
  this.ctx.beginPath();
  this.ctx.arc(0,0,5,0,Math.PI*2,true);
  this.ctx.fill();
  this.ctx.closePath();
  // 畫(huà)長(zhǎng)橫線
  this.ctx.beginPath();
  this.ctx.moveTo(0,0);
  this.ctx.lineTo(280,0);
  this.ctx.strokeStyle='#000';
  this.ctx.stroke();
  this.ctx.beginPath();
  this.ctx.font='12px 微軟雅黑';
  var yearText = '';
  var arr = String(this.year).split('');
  for(var n=0;n<arr.length;n++){
  var num = Number(arr[n]);
  yearText += this.numberText[num];
  }
  var weekday = this.day === 0 ? '星期日': '星期'+this.numberText[this.day]; // 星期
  var moText = this.numberText[this.mon]+'月'+ this.numberText[this.da]+'日';
  this.ctx.fillText(yearText+'年',10,-10); // 年份的文字
  this.ctx.fillText(moText,10,20); // 月份/日期/星期的文字 
  this.ctx.fillText(weekday,10,40); // 月份/日期/星期的文字 

  this.drawClock();
 }
 // 畫(huà)刻度
 this.drawClock = function(){
  // 時(shí)鐘
  this.ctx.save(); // 保存當(dāng)前狀態(tài)
  this.ctx.rotate(Math.PI / 12 * this.h);
  for(var j=0; j < 24;j++){
  this.ctx.beginPath();
  var color = j === this.h ? '#000': '#ccc';
  this.ctx.strokeStyle = color;
  this.ctx.font='12px 微軟雅黑';
  this.ctx.strokeText(this.H[j],110,-5);
  this.ctx.closePath();
  this.ctx.rotate(-Math.PI / 12);
  }
  this.ctx.restore(); // 恢復(fù)到上一次的狀態(tài)
  

  // 分鐘
  this.ctx.save(); 
  this.ctx.rotate(Math.PI / 30 * this.m);
  for (var i=0; i < 60; i++){
  this.ctx.beginPath();
  var color = i === this.m ? '#000': '#ccc';
  this.ctx.strokeStyle = color;
  this.ctx.strokeText(this.M[i],170,-5);
  this.ctx.closePath();
  this.ctx.rotate(-Math.PI / 30);
  }
  this.ctx.restore();
  

  // 秒鐘
  this.ctx.save();
  this.ctx.rotate(Math.PI / 30 * this.s);
  for (var k=0; k < 60; k++){
  this.ctx.beginPath();
  var color = k === this.s ? '#000': '#ccc';
  this.ctx.strokeStyle = color;
  this.ctx.strokeText(this.S[k],230,-5);
  this.ctx.closePath();
  this.ctx.rotate(-Math.PI / 30);
  }
  this.ctx.restore();
  // ctx.rotate(-Math.PI / 30 * this.s);
 }
 // 初始化
 this.init = function(){
  var that = this;
  this.timer = setInterval(function(){
  that.setTime();
  that.draw();
  },100);
 }
 // 停止
 this.stop = function(){
  clearInterval(this.timer);
  this.timer = null;
 }
 // 設(shè)置時(shí)間
 this.setTime = function(){
  var date = new Date();
  this.year = date.getFullYear(); // 年, int
  this.mon = date.getMonth()+1; // 月分, int
  this.da = date.getDate(); // 日期, int
  this.day = date.getDay(); // 星期, int


  var hour = date.getHours(); // 時(shí),int
  var minu = date.getMinutes(); // 分,int
  var sec = date.getSeconds(); // 秒,int
  
 // 毫秒數(shù)/1000 ,這里主要是為了做幀動(dòng)畫(huà)
  var minuScond = date.getMilliseconds()/1000;

  var second; // 秒,計(jì)算秒旋轉(zhuǎn)的角度, float
  var minute; // 分,計(jì)算分鐘的角度,float
  var ho; // 小時(shí),計(jì)算小時(shí)的角度,float

  if(minuScond > 0.8){
  second = Math.ceil(sec+ minuScond);
  second = second >= 60? 0:second;
  } else {
  second = sec+ minuScond;
  }
  // 秒鐘到了59,分鐘要過(guò)渡
  if(sec === 59) {
  if(minuScond >= 0.8){
   minute = Math.ceil(minu+ minuScond);
   minute = minute >=60 ? 0: minute;
  } else{
   minute = minu + minuScond;
  }
  } else{
  minute = minu;
  }
  // 秒數(shù)到了59和分鐘數(shù)到了59;時(shí)針要過(guò)渡
  if(sec === 59 && minu===59){
  if(minuScond >= 0.8){
   ho = Math.ceil(hour+ minuScond);
   ho = ho >=24 ? 0: ho;
  } else{
   ho = hour + minuScond;
  }
  } else{
  ho = hour;
  }
  this.h = ho; // 小時(shí)
  this.m = minute; // 分鐘
  this.s = second; // 秒鐘
 }
 }
 var clock = new Clock(ctx);
 clock.init();
</script>
</body>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序如何獲取用戶手機(jī)號(hào)

    微信小程序如何獲取用戶手機(jī)號(hào)

    這篇文章主要為大家詳細(xì)介紹了微信小程序如何獲取用戶手機(jī)號(hào),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 快速使用Bootstrap搭建傳送帶

    快速使用Bootstrap搭建傳送帶

    這篇文章主要介紹了快速使用Bootstrap搭建傳送帶的相關(guān)資料,非常具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • javascript頁(yè)面加載完執(zhí)行事件代碼

    javascript頁(yè)面加載完執(zhí)行事件代碼

    本篇文章主要是對(duì)javascript頁(yè)面加載完執(zhí)行事件的代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-02-02
  • JavaScript中處理數(shù)組,對(duì)象和正則的實(shí)用函數(shù)

    JavaScript中處理數(shù)組,對(duì)象和正則的實(shí)用函數(shù)

    本文主要分享一下最近項(xiàng)目中遇到的一些javascript的業(yè)務(wù)邏輯函數(shù),這些函數(shù)可以提成一個(gè)公用的工具函數(shù)以便于在以后的項(xiàng)目中進(jìn)行使用,希望對(duì)大家有所幫助
    2023-11-11
  • javascript入門(mén)教程基礎(chǔ)篇

    javascript入門(mén)教程基礎(chǔ)篇

    這篇文章主要介紹了javascript入門(mén)教程,全部?jī)?nèi)容都是javascript的基礎(chǔ)知識(shí),內(nèi)容很全面,特別適合剛剛學(xué)習(xí)javascript的朋友學(xué)習(xí),希望大家仔細(xì)閱讀javascript教程。
    2015-11-11
  • TypeScript泛型參數(shù)默認(rèn)類型和新的strict編譯選項(xiàng)

    TypeScript泛型參數(shù)默認(rèn)類型和新的strict編譯選項(xiàng)

    這篇文章主要介紹了TypeScript泛型參數(shù)默認(rèn)類型和新的strict編譯選項(xiàng),對(duì)TypeScript感興趣的同學(xué),可以參考下
    2021-05-05
  • 微信小程序開(kāi)發(fā)搜索功能實(shí)現(xiàn)(前端+后端+數(shù)據(jù)庫(kù))

    微信小程序開(kāi)發(fā)搜索功能實(shí)現(xiàn)(前端+后端+數(shù)據(jù)庫(kù))

    這篇文章主要介紹了微信小程序開(kāi)發(fā)搜索功能實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • js輪播圖之旋轉(zhuǎn)木馬效果

    js輪播圖之旋轉(zhuǎn)木馬效果

    這篇文章主要為大家詳細(xì)介紹了js輪播圖之旋轉(zhuǎn)木馬效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • typescript返回值類型和參數(shù)類型的具體使用

    typescript返回值類型和參數(shù)類型的具體使用

    本文主要介紹了typescript返回值類型和參數(shù)類型的具體使用文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • JS判斷字符串是否全為空的兩種方式

    JS判斷字符串是否全為空的兩種方式

    當(dāng)我們需要判斷用戶輸入的是否全是空格,或用戶在不輸入內(nèi)容的情況下使用回車發(fā)送,此時(shí)我們?nèi)绻枨髢?nèi)容不能為空,常規(guī)判斷無(wú)法識(shí)別,空格本身也有l(wèi)ength,這個(gè)時(shí)候就可使用到下列兩種方式
    2023-10-10

最新評(píng)論

阳西县| 鄂州市| 江西省| 汉中市| 车险| 开化县| 达孜县| 滨海县| 岚皋县| 喀喇沁旗| 绍兴市| 泽库县| 宜兰市| 嘉义市| 尼木县| 长沙县| 团风县| 呼图壁县| 周口市| 锡林郭勒盟| 合江县| 宁南县| 卓资县| 西藏| 交城县| 汕尾市| 姜堰市| 洛扎县| 井冈山市| 都兰县| 上思县| 宁蒗| 夹江县| 汉源县| 铜川市| 兴国县| 闻喜县| 镶黄旗| 女性| 象山县| 临汾市|