JS实现简易刻度时钟示例代码


Posted in Javascript onMarch 11, 2017

如图所示,利用JS实现简易的刻度时钟;

JS实现简易刻度时钟示例代码

原理如下:利用60等份的li进行布局,li两两之间的间隔为6deg,把基点定在圆心上,使得li圆形分布。然后另外设置三条针线的样式的位置,基点同样定在圆心上,然后秒针每秒动6deg,分针每秒动1/60deg,时针每秒动1/3600deg。

布局代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css" id="sty">
      *{
        margin: 0;
        padding: 0;
        list-style: none;
      }
      #wrap{
        width: 200px;
        height: 200px;
        border: 1px solid #000;
        border-radius: 50%;
        margin: 20px auto;
        position: relative;
      }
      #wrap ul{
        position: relative;
      }
      #wrap ul li{
        width: 2px;
        height: 6px;
        background: #000;
        position: absolute;
        left: 99px;
        top: 0;
        -moz-transform-origin: center 100px;
      }
      #wrap ul li:nth-child(5n){
        height: 10px;
      }
      #con{
        width: 10px;
        height: 10px;
        background: #000;
        border-radius: 50%;
        position: absolute;
        left: 95px;
        top: 95px;
      }
      #hour{
        width: 5px;
        height: 70px;
        background: red;
        border-radius: 50%;
        position: absolute;
        left: 98px;
        top: 35px;
        -moz-transform-origin: center 65px;
      }
      #min{
        width: 3px;
        height: 85px;
        background: #000;
        border-radius: 50%;
        position: absolute;
        left: 98.5px;
        top: 20px;
        -moz-transform-origin: center 80px;
      }
      #sec{
        width: 2px;
        height: 100px;
        background: gray;
        border-radius: 50%;
        position: absolute;
        left: 98.5px;
        top: 20px;
        -moz-transform-origin: center 80px;
      }
    </style>
  </head>
  <body>
    <div id="wrap">
      <ul id="list">

      </ul>
      <div id="hour"></div>
      <div id="min"></div>
      <div id="sec"></div>
      <div id="con"></div>
    </div>
  </body>
</html>

布局代码里需要注意的是:每隔四个刻度就有一个刻度比较长,所以我们在设置样式的时候要特别注意加上:#wrap ul li:nth-child(5n){height: 10px;}。第5n个的长度变长。

JS代码中主要搞清楚三针之间的度数关系就好做了,代码如下:

<script type="text/javascript">
  window.onload=function(){
    var oWrap=document.getElementById('wrap');
    var oList=document.getElementById('list');
    var oSty=document.getElementById('sty');

    var tump='';

    for(var i=0;i<60;i++){
      var aLi=document.createElement('li');
      oList.appendChild(aLi);

      tump+='#wrap ul li:nth-child('+(i+1)+'){transform: rotate('+(i+1)*6+'deg);}';
      oSty.innerHTML+=tump;
    }

    var oSec=document.getElementById('sec');
    var oMin=document.getElementById('min');
    var oHour=document.getElementById('hour');
    function time(){
      var date=new Date();
      var s=date.getSeconds();
      var m=date.getMinutes()+(s/60);
      var h=date.getHours()+(m/60);

      oSec.style.transform='rotate('+s*6+'deg)';
      oMin.style.transform='rotate('+m*6+'deg)';
      oHour.style.transform='rotate('+h*30+'deg)';
    }
    time();

    setInterval(time,1000);
  }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
DOMAssitant最新版 DOMAssistant 2.5发布
Dec 25 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
JavaScript中的对象的extensible属性介绍
Dec 30 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
vue页面更新patch的实现示例
Mar 25 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 Javascript
js鼠标跟随运动效果
Mar 11 #Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 #Javascript
基于Node.js的WebSocket通信实现
Mar 11 #Javascript
js原生Ajax的封装和原理详解
Mar 11 #Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 #Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 #Javascript
基于Bootstrap框架实现图片切换
Mar 10 #Javascript
You might like
我的论坛源代码(八)
2006/10/09 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
javascript深入理解js闭包
2010/07/03 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
javascript正则表达式总结
2016/02/29 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Django logging配置及使用详解
2019/07/23 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
python MD5加密的示例
2020/10/19 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
你常见到的runtime exception
2016/09/05 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
纠风工作实施方案
2014/03/15 职场文书
献爱心倡议书
2014/04/14 职场文书
企业标语口号
2014/06/10 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
个园导游词
2015/02/04 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
趣味运动会通讯稿
2015/07/18 职场文书