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 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
Dec 28 Javascript
基于jquery的滚动新闻列表
Jun 19 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
js 页面关闭前的出现提示的实现代码
May 25 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
php register_shutdown_function函数详解
Jul 23 Javascript
详解JS中的柯里化(currying)
Aug 17 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
Vue Object 的变化侦测实现代码
Apr 15 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调用Java对象的方法
2006/10/09 PHP
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
10个实用的PHP代码片段
2011/09/02 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
JavaScript多线程详解
2015/08/12 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python验证码识别的示例代码
2017/09/21 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
高一英语教学反思
2014/01/22 职场文书
优秀教师个人材料
2014/12/15 职场文书
工作保证书怎么写
2015/02/28 职场文书
入党积极分子个人总结
2015/03/02 职场文书
民事调解书范文
2015/05/20 职场文书
美容院员工规章制度
2015/08/05 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Python如何让字典保持有序排列
2022/04/29 Python