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 相关文章推荐
javascript attachEvent和addEventListener使用方法
Mar 19 Javascript
validator验证控件使用代码
Nov 23 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 Javascript
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中两个float(浮点数)比较实例分析
2015/09/27 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
javascript实现下雨效果
2017/03/27 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python实现字符串加密成纯数字
2019/03/19 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
大学生实习思想汇报
2014/01/12 职场文书
班级旅游计划书
2014/05/03 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
质量月口号
2014/06/20 职场文书
2014年财政所工作总结
2014/11/22 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
党小组意见范文
2015/06/08 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
python实现局部图像放大
2021/11/17 Python
关于Vue中的options选项
2022/03/22 Vue.js