使用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 相关文章推荐
html下载本地
Jun 19 Javascript
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
基于Jquery的简单图片切换效果
Jan 06 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
javascript页面倒计时实例
Jul 25 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
Jan 14 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
koa中间件核心(koa-compose)源码解读分析
Jun 15 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
Protoss兵种对照表
2020/03/14 星际争霸
php实现的Cookies操作类实例
2014/09/24 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
nodejs教程之入门
2014/11/21 NodeJs
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
kafka-python批量发送数据的实例
2018/12/27 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
大学生村官心得体会范文
2014/01/04 职场文书
打造完美自荐信
2014/01/24 职场文书
医药销售自我评价200字
2014/09/11 职场文书
学习心理学的体会
2014/11/07 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
城南旧事读书笔记
2015/06/29 职场文书
厉行节约工作总结
2015/08/12 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS