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 相关文章推荐
Javascript模板技术
Apr 27 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
详解vue axios中文文档
Sep 12 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
vue中引用阿里字体图标的方法
Feb 10 Javascript
vue调试工具vue-devtools安装及使用方法
Nov 07 Javascript
小程序实现搜索框功能
Mar 26 Javascript
vue实现下拉加载其实没那么复杂
Aug 13 Javascript
vue项目中极验验证的使用代码示例
Dec 03 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验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
20个最新的jQuery插件
2012/01/13 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
js实现表格筛选功能
2017/01/18 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python hook监听事件详解
2018/10/25 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
python pygame实现方向键控制小球
2019/05/17 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
如何在django中实现分页功能
2020/04/22 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
大学总结自我鉴定
2014/01/18 职场文书
高中学生期末评语
2014/04/25 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书