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 相关文章推荐
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
EasyUi datagrid 实现表格分页
Feb 10 Javascript
面试常见的js算法题
Mar 23 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
vue按需加载组件webpack require.ensure的方法
Dec 13 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
微信小程序实现按字母排列选择城市功能
Nov 25 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
destoon官方标签大全
2014/06/20 PHP
Javascript this指针
2009/07/30 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python实现代码统计器
2019/09/19 Python
python 如何快速复制序列
2020/09/07 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
Viking比利时:购买办公用品
2019/10/30 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
冰峪沟导游词
2015/02/09 职场文书
教师党员自我评价2015
2015/03/04 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python