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 相关文章推荐
js的with语句使用方法
Sep 21 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
Dec 22 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 Javascript
如何编写一个完整的Angular4 FormText 组件
Nov 18 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
详解react组件通讯方式(多种)
May 06 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 Javascript
解决elementui表格操作列自适应列宽
Dec 28 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
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python多线程多进程实例对比解析
2020/03/12 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
创先争优个人总结
2015/03/04 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
银行培训心得体会范文
2016/01/09 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL