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 相关文章推荐
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
javascript 遍历验证所有文本框的值
Aug 27 Javascript
JQuery index()方法使用代码
Jun 02 Javascript
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 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异步执行的常用方式详解
2013/06/03 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
Yii框架安装简明教程
2020/05/15 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
物业客服专员岗位职责
2013/11/30 职场文书
新品发布会策划方案
2014/06/08 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
大四学生个人总结
2015/02/15 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
安全教育片观后感
2015/06/17 职场文书
父亲节感言
2015/08/03 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python