JS html时钟制作代码分享


Posted in Javascript onMarch 03, 2017

时钟效果图:

JS html时钟制作代码分享

闲来无聊做了一个网页的时钟,效果模拟传统时钟的运行方式,

运用了html 的画布实现指针,背景图片引用了网络图片。

具体原理:

首先将时钟分为四个不同区域,对每个区域计算cos,sin 来确实指针顶点位置。在通过画布来绘画出指针。
通过setInterval 每秒刷新指针位置实现 传统机械表针的动态跳动。

本人是JS开发程序员,从业1年多。闲来无聊的简单页面,

欢迎大家提问,或者建议。共同进步

代码部分,直接复制HTML 文件中即可查看效果:

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
  <title>clock</title>
</head>
<body style="color:green; <!--background-image:url('http://image.lxway.com/upload/b/f0/bf0d97dcee487096548e6edbc89d4963_thumb.png');--> background-size:100%; background-repeat: no-repeat; background-attachment:fixed">
  <div style="width: 900px; height: 900px; margin-top: 50px; margin-left: 50px;">
    <div style="position: absolute; left:119px;top: 193px; width: 900px; height: 900px; background-image:url('http://image.lxway.com/upload/b/f0/bf0d97dcee487096548e6edbc89d4963_thumb.png'); background-repeat: no-repeat; z-index: -1;">
    </div>
    <canvas id="t" width="800" height="800"></canvas>
    <div style="position: absolute; left:118px;top: 464px; width: 100px; height: 200px; background-color: white; background-repeat: no-repeat; z-index: 10;">
    </div>
  </div>
  <script language="javascript">
        var s = setInterval(moveI, 1000);
        function moveI() {
          var c = document.getElementById("t");
          var pc = c.getContext("2d");
          c.height = c.height;
          //秒
          pc.lineWidth = 3;
          pc.strokeStyle = 'rgba(255,0,0,0.8)';
          var now = new Date();
          var sindex = getxy(150, now.getSeconds());
          pc.moveTo(400, 400);
          pc.lineTo(sindex.x, sindex.y);
          pc.stroke();
          pc.beginPath();
          //分
          pc.lineWidth = 7;
          pc.strokeStyle = 'rgba(50,50,50,0.8)';
          var mindex = getxy(120, now.getMinutes() + (now.getSeconds() / 60));
          pc.moveTo(400, 400);
          pc.lineTo(mindex.x, mindex.y);
          pc.stroke();
          pc.beginPath();
          //时
          pc.lineWidth = 10;
          pc.strokeStyle = 'rgba(0,0,0,0.8)';
          var hindex = getxy(80, ((now.getHours() > 12 ? now.getHours() - 12 : now.getHours()) + (now.getMinutes() / 60)) * 5);
          pc.moveTo(400, 400);
          pc.lineTo(hindex.x, hindex.y);
          pc.stroke();
        };

        function getxy(r, t) {
          //计算分区 0,1,2,3
          var a = parseInt(t / 15);
          //分区角度
          t = t - 15 * a;
          var y;
          var x;
          //基于分区的坐标计算
          switch (a) {
            case 0:
              y = r - (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r + (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 1:
              y = r + (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r + (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 2:
              y = r + (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r - (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 3:
              y = r - (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r - (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            default:
              break;
          }
          y = (400 - r) + y;
          x = (400 - r) + x;
          return {
            'x': x,
            'y': y
          };
        };
  </script>
</body>

</html>

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

Javascript 相关文章推荐
js验证表单大全
Nov 25 Javascript
拖动布局之保存布局页面cookies篇
Oct 29 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
JS生成不重复随机数组的函数代码
Jun 10 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
Feb 05 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
Three.js基础学习之场景对象
Sep 27 Javascript
JS实现网站吸顶条
Jan 08 Javascript
vue实现移动端返回顶部
Oct 12 Javascript
AngularJS路由实现页面跳转实例
Mar 03 #Javascript
vue2笔记 — vue-router路由懒加载的实现
Mar 03 #Javascript
求js数组的最大值和最小值的四种方法
Mar 03 #Javascript
jQuery控制元素隐藏和显示
Mar 03 #Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
Mar 03 #Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
Mar 03 #Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 #Javascript
You might like
php date()日期时间函数详解
2010/05/16 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
利用php输出不同的心形图案
2016/04/22 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
Python解析json文件相关知识学习
2016/03/01 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
python实现登录与注册系统
2020/11/30 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
法学个人求职信范文
2014/01/27 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
初中优秀学生评语
2014/12/29 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL