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实现读取txt文档的脚本
Jul 20 Javascript
JavaScript.Encode手动解码技巧
Jul 14 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
Json和Jsonp理论实例代码详解
Nov 15 Javascript
javascript比较两个日期的先后示例代码
Dec 31 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
ES6中Array.copyWithin()函数的用法实例详解
Sep 16 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
vue双向绑定数据限制长度的方法
Nov 04 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
自己前几天写的无限分类类
2007/02/14 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php广告加载类用法实例
2014/09/23 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
化学教育专业自荐信
2014/07/04 职场文书
法人授权委托书
2014/09/16 职场文书
计划生育诚信协议书
2014/11/02 职场文书
布达拉宫导游词
2015/02/02 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS