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 相关文章推荐
学习YUI.Ext 第三天
Mar 10 Javascript
js 判断 enter 事件
Feb 12 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
Feb 03 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
BootStrap响应式导航条实例介绍
May 06 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 Javascript
Vue开发之封装上传文件组件与用法示例
Apr 25 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
ajax php 实现写入数据库
2009/09/02 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php下获取http状态的实现代码
2014/05/09 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
javascript打印输出json实例
2013/11/11 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
对python中数组的del,remove,pop区别详解
2018/11/07 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python返回数组的索引实例
2019/11/28 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
jupyter notebook清除输出方式
2020/04/10 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
公司JAVA开发面试题
2015/04/02 面试题
海量信息软件测试笔试题
2015/08/08 面试题
学校七一活动方案
2014/01/19 职场文书
警校毕业生自我评价
2014/04/06 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
如何使用SQL Server语句创建表
2022/04/12 SQL Server