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.ui.progressbar 中文文档
Nov 26 Javascript
教您去掉ie网页加载进度条的方法
Dec 09 Javascript
jquery中ajax学习笔记3
Oct 16 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
VUE路由动态加载实例代码讲解
Aug 26 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
教师工作表现评语
2014/12/31 职场文书
家长会欢迎词
2015/01/23 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
单身证明格式样本
2015/06/15 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技