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中万恶的function实例分析
May 25 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
Jquery封装tab自动切换效果的具体实现
Jul 13 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
Nov 24 Javascript
Vue实现购物车功能
Apr 27 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
详解JavaScript执行模型
Nov 16 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 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 cron中的批处理
2008/09/16 PHP
php mssql 时间格式问题
2009/01/13 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
php实现简单四则运算器
2020/11/29 PHP
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
谈谈JS中的!!
2017/12/07 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
Python脚本获取操作系统版本信息
2016/12/17 Python
Python 对象中的数据类型
2017/05/13 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Django的Modelforms用法简介
2019/07/27 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
教师专业自荐书范文
2014/02/10 职场文书
教师听课学习心得体会
2016/01/15 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
python glom模块的使用简介
2021/04/13 Python