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复选框CHECKBOX全选、反选
Aug 30 Javascript
jQuery 渐变下拉菜单
Dec 15 Javascript
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
Vue动态获取width的方法
Aug 22 Javascript
vue构建动态表单的方法示例
Sep 22 Javascript
Node.js 在本地生成日志文件的方法
Feb 07 Javascript
js实现简单的无缝轮播效果
Sep 05 Javascript
如何用JavaScript学习算法复杂度
Apr 30 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php+mysql数据库查询实例
2015/01/21 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
js a标签点击事件
2017/03/30 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
高效使用Python字典的清单
2018/04/04 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python变量的存储原理详解
2019/07/10 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Python龙贝格法求积分实例
2020/02/29 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
提高python代码运行效率的一些建议
2020/09/29 Python
Flask处理Web表单的实现方法
2021/01/31 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
公司门卫管理制度
2014/02/01 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
2014年财政工作总结
2014/12/10 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
单位政审意见范文
2015/06/04 职场文书