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 应用技巧集合[推荐]
Aug 30 Javascript
js获取height和width的方法说明
Jan 06 Javascript
Jquery显示、隐藏元素以及添加删除样式
Aug 09 Javascript
Js利用Canvas实现图片压缩功能
Sep 13 Javascript
js 中rewrap-ajax.js插件实例代码
Oct 20 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
js replace 全局替换的操作方法
Jun 12 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 09 Javascript
cypress测试本地web应用
Jun 01 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+MySQL的聊天室设计
2006/10/09 PHP
PHP生成静态页面详解
2006/12/05 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
PyQt5每天必学之单行文本框
2018/04/19 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
Django发送邮件功能实例详解
2019/09/02 Python
python中删除某个元素的方法解析
2019/11/05 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
关于VPN
2012/06/10 面试题
致跳高运动员加油稿
2014/02/12 职场文书
大学新生入学教育方案
2014/05/16 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
员工升职自荐信
2015/03/27 职场文书
初中班干部工作总结
2015/08/10 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js