jquery+html5制作超酷的圆盘时钟表


Posted in Javascript onApril 14, 2015

自己封装的一个用HTML5+jQuery写的时钟表

代码:

<!DOCTYPE html PUBLIC "-//W3C//h2D XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/h2D/xhtml1-transitional.h2d">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>超酷数码钟表</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs
/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
//引用的是在线jquery地址,如果不行请自行下载切换
(function($){
  $.fn.drawClock = function(options){
    var mainId = $(this);
     
    //设置默认参数
    var defaultOptions = {
      'width': '300px',
      'height': '300px',
      'margin': '200px auto',
      'border': '1px solid #888',
      'border-radius': '50%',
      'box-shadow': '2px 2px 4px #111'
    };
    var options = $.extend(defaultOptions, options);
     
    mainId.css({
      'width': options.width, 
      'height': options.height, 
      'margin': options.margin,
      'border': options.border,
      'border-radius': options['border-radius'],
      'box-shadow': options['box-shadow'], 
      'position': 'relative'
    }).css({
      'background': '-webkit-gradient(radial, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', 0, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', ' + mainId.width()/2 + ', from(#ffe), to(#eee))', 
      'background': '-moz-radial-gradient(circle closest-side, #ffe 0%, #eee 100%)'
    });
     
    //钟表盘中心圆
    $("<div id='circle'></div>").appendTo(mainId).css({
      'width': '20px',
      'height': '20px',
      'border-radius': '50%',
      'box-shadow': '0 0 5px rgba(0,0,0,0.8)',
      'position': 'absolute',
      'z-index': 999,
      'background': '-webkit-gradient(radial, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', 0, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', ' + mainId.width()/2 + ', from(#ffe), to(#eee))',
      'background': '-moz-radial-gradient(circle, #eee 30%, #ffe 100%)'
    }).css({
      'left': mainId.width()/2 - $('#circle').width()/2,
      'top': mainId.height()/2 - $('#circle').height()/2
    });
     
    var dateTime = new Date();
    var oHours = dateTime.getHours();
    var oMinutes = dateTime.getMinutes();
    var oSeconds = dateTime.getSeconds();
     
    //初始化时分秒
    var hPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(3/6), 5, "#333", -90+oHours*30+oMinutes*6/12);
    var mPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(4/6), 4, "#666", -90+oMinutes*6);
    var sPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(5/6), 3, "#f00", -90+oSeconds*6);
     
    //运动时分秒
    var timer = setInterval(function(){
      dateTime = new Date();
      oHours = dateTime.getHours();
      oMinutes = dateTime.getMinutes();
      oSeconds = dateTime.getSeconds();    
      hPointer.css({'transform': 'rotate(' + (-90+oHours*30+oMinutes*6/12) + 'deg)'});
      mPointer.css({'transform': 'rotate(' + (-90+oMinutes*6) + 'deg)'});
      sPointer.css({'transform': 'rotate(' + (-90+oSeconds*6) + 'deg)'});
    }, 1000);
     
     
    //绘制钟表刻度
    for(var i=0; i<60; i++){
      var width = 3, height = 6, oBcolor = '#111';
      if(i%5 == 0){
        width = 5;
        height = 10;
      }
      if(i%15 == 0){
        oBcolor = 'red';
      }
      $("<div class='clockMark'></div>").appendTo(mainId).css({
        'width': width,
        'height': height,
        'position': 'absolute',
        'top': 0,
        'left': mainId.width()/2,
        'background': oBcolor,
        'transform': 'rotate(' + i*6 + 'deg)',
        "transform-origin": "0 " + mainId.width()/2+'px'
      });
    }
     
    //绘制钟表指针
    function drawPointer (startx, starty, width, height, bcolor, angle) {
      var oPointer = $("<div></div>");
      oPointer.appendTo(mainId).css({
        'width': width,
        'height': height,
        'position': 'absolute',
        'top': starty,
        'left': startx,
        'background': bcolor,
        'transform': 'rotate(' + angle + 'deg)',
        'transform-origin': '0 0'
      });
      return oPointer;
    }
     
    return this;
  }
})(jQuery);
</script>
<script type="text/javascript">
$(function(){
  $('#clock').drawClock();
});
</script>
</head>
 
<body>
  <div id="clock"></div>
</body>
</html>

演示图:

jquery+html5制作超酷的圆盘时钟表 

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
一个XML格式数据转换为图表的例子
Feb 09 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
JS中位置与大小的获取方法
Nov 22 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
详解Vue-cli 创建的项目如何跨域请求
May 18 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
JavaScript将字符串转换为整数的方法
Apr 14 #Javascript
使用javascript实现判断当前浏览器
Apr 14 #Javascript
jQuery获得指定元素坐标的方法
Apr 14 #Javascript
JavaScript时间转换处理函数
Apr 14 #Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 #Javascript
js正则表达式匹配数字字母下划线等
Apr 14 #Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 #Javascript
You might like
PHP简介
2006/10/09 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
浅谈php7的重大新特性
2015/10/23 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
Python入门篇之文件
2014/10/20 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
我的网上商城创业计划书
2013/12/26 职场文书
小学生班会演讲稿
2014/01/09 职场文书
家长对老师的评语
2014/04/18 职场文书
年终晚会活动方案
2014/08/21 职场文书
运动会广播稿300字
2015/08/19 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书