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 相关文章推荐
window.addeventjs事件驱动函数集合addEvent等
Feb 19 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
Apr 26 Javascript
javascript object array方法使用详解
Dec 03 Javascript
jquery 通过name快速取值示例
Jan 24 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
AngularJs表单验证实例详解
May 30 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
简单了解JS打开url的方法
Feb 21 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
php的一个简单加密解密代码
2014/01/14 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python最长公共子串算法实例
2015/03/07 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
python爬取哈尔滨天气信息
2018/07/14 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
文明家庭先进事迹材
2014/01/27 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
民间借贷协议书范本
2014/10/01 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
初中生毕业评语
2014/12/29 职场文书