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 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
Aug 23 Javascript
zTree插件之单选下拉菜单实例代码
Nov 07 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
利用node.js如何创建子进程详解
Dec 09 Javascript
Node.js log4js日志管理详解
Jul 31 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 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中如何调用webservice的实例参考
2013/04/25 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
js实现图片无缝循环轮播
2019/10/28 Javascript
node使用request请求的方法
2019/12/20 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
python 自定义对象的打印方法
2019/01/12 Python
解决Mac下使用python的坑
2019/08/13 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
办理居住证介绍信
2014/01/15 职场文书
女子职高个人自荐书
2014/02/01 职场文书
化工操作工岗位职责
2014/04/29 职场文书
团委副书记工作总结
2015/08/14 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python