使用js和canvas实现时钟效果


Posted in Javascript onSeptember 08, 2020

使用js和canvas写一个时钟,供大家参考,具体内容如下

使用js和canvas实现时钟效果

<!DOCTYPE html>`
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <canvas id='canvas' width='600' height='600' style="border: 1px solid red;"></canvas>
  <script>
    /** @type {HTMLCanvasElement} */
    let canvas = document.querySelector("#canvas");
    let ctx = canvas.getContext("2d");
    let deg = Math.PI / 180;

    let HourR = 100;
    let MinutesR = 135;
    let SecondsR = 170;
    setInterval(function () {

      canvas.width = canvas.width;
      ctx.arc(300, 300, 200, 0, Math.PI * 2)
      ctx.fillStyle = 'rgba(10,100,30,0.2)'
      ctx.strokeStyle = 'red'
      //获取当前时间
      let dt = new Date()
      let Hour = dt.getHours()
      let Minutes = dt.getMinutes()
      let Seconds = dt.getSeconds()
      //时钟
      ctx.moveTo(300, 300);
      let xx = HourR * (Math.sin(Hour * 30 * deg))
      let yy = HourR * (Math.cos(Hour * 30 * deg))
      ctx.lineTo((300 + xx), (300 - yy))
      //分钟和秒钟
      function move(time, R) {
        ctx.moveTo(300, 300);
        xx = R * (Math.sin(time * 6 * deg))
        yy = R * (Math.cos(time * 6 * deg))
        ctx.lineTo((300 + xx), (300 - yy))
      }
      //小时指针
      for (let m = 0; m < 12; m++) {
        let xx = 190 * (Math.sin(m * 30 * deg))
        let yy = 190 * (Math.cos(m * 30 * deg))
        let xx1 = 200 * (Math.sin(m * 30 * deg))
        let yy1 = 200 * (Math.cos(m * 30 * deg))
        ctx.moveTo((300 + xx), (300 - yy));
        ctx.lineTo((300 + xx1), (300 - yy1))
      }

      move(Seconds, SecondsR)
      move(Minutes, MinutesR)
      ctx.fill()
      ctx.stroke()
    }, 1000)


  </script>
</body>

</html>

更多JavaScript时钟特效点击查看:JavaScript时钟特效专题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
jQuery 使用手册(七)
Sep 23 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
js prototype深入理解及应用实例分析
Nov 25 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
javascript使用canvas实现饼状图效果
Sep 08 #Javascript
vue配置多代理服务接口地址操作
Sep 08 #Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 #Javascript
JS删除对象中某一属性案例详解
Sep 08 #Javascript
vue全局使用axios的操作
Sep 08 #Javascript
Vue自定义多选组件使用详解
Sep 08 #Javascript
vue项目中微信登录的实现操作
Sep 08 #Javascript
You might like
php存储过程调用实例代码
2013/02/03 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
简谈创建React Component的几种方式
2019/06/15 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
什么是反射
2012/03/17 面试题
幼儿教师考核制度
2014/01/25 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
安全教育月活动总结
2014/05/05 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
董事长新年致辞
2015/07/29 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
mysql 子查询的使用
2022/04/28 MySQL