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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
使用coffeescript编写node.js项目的方法汇总
Aug 05 Javascript
Node.js插件安装图文教程
May 06 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 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
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
YII中assets的使用示例
2014/07/31 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
python超简单解决约瑟夫环问题
2015/05/12 Python
Python实现批量下载图片的方法
2015/07/08 Python
python解决字符串倒序输出的问题
2018/06/25 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Python实现上下文管理器的方法
2020/08/07 Python
5款实用的python 工具推荐
2020/10/13 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
幼儿园家长会邀请函
2014/01/15 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
园艺师求职信
2014/04/27 职场文书
出差报告范文
2014/11/06 职场文书
员工开除通知书
2015/04/25 职场文书
教育教学读书笔记
2015/07/02 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
python实现过滤敏感词
2021/05/08 Python
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
Mysql中常用的join连接方式
2022/05/11 MySQL