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 相关文章推荐
JS的数组的扩展实例代码
Jul 09 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 Javascript
javascript下判断一个元素是否存在的代码
Mar 05 Javascript
JavaScript中的闭包原理分析
Mar 08 Javascript
浅谈Javascript事件模拟
Jun 27 Javascript
js中获取时间new Date()的全面介绍
Jun 20 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
利用three.js画一个3D立体的正方体示例代码
Nov 19 Javascript
用vue快速开发app的脚手架工具
Jun 11 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
很实用的一个完整email发送程序
2006/10/09 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Django框架封装外部函数示例
2019/05/28 Python
Django中create和save方法的不同
2019/08/13 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
超市促销活动方案
2014/03/05 职场文书
国企干部对照检查材料
2014/08/22 职场文书
运动会跳远广播稿
2015/08/19 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python