使用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插件jbox使用iframe关闭问题
Feb 09 Javascript
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
有趣的javascript数组定义方法
Sep 10 Javascript
基于jquery的页面划词搜索JS
Sep 14 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
May 11 Javascript
JavaScript实现一键复制内容剪贴板
Jul 23 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
PHP6 mysql连接方式说明
2009/02/09 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
JavaScript模拟push
2016/03/06 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
python optparse模块使用实例
2015/04/09 Python
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Anaconda入门使用总结
2018/04/05 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
群众路线批评与自我批评
2014/02/06 职场文书
委托书范文
2014/04/02 职场文书
励志演讲稿200字
2014/08/21 职场文书
公司董事任命书
2015/09/21 职场文书
校园安全学习心得体会
2016/01/18 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android