使用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 相关文章推荐
JS 树形递归实例代码
May 18 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
angularjs实现猜数字大小功能
May 20 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
js实现滑动滑块验证登录
Jul 24 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 Javascript
jQuery实现简单三级联动效果
Sep 05 jQuery
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使用cookie保存用户登录的用户名实例
2015/01/26 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Python3实现生成随机密码的方法
2014/08/23 Python
在Python中使用第三方模块的教程
2015/04/27 Python
python中随机函数random用法实例
2015/04/30 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python实现登录接口的示例代码
2017/07/21 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
python构造IP报文实例
2020/05/05 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
材料成型及控制工程专业求职信
2014/06/19 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
十八大宣传标语
2014/10/09 职场文书
大学毕业生自我评价
2015/03/02 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
Python+Appium新手教程
2021/04/17 Python
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL
python基础详解之if循环语句
2021/04/24 Python