做时钟的主要原因是因为喜欢,觉得它好看(本人对特效有点爱不释手……)。做的时候感觉工程量会有点大,做着做着发现实现起来其实并不难,只要理清思绪,其实还蛮简单的(我制作东西喜欢整体方向制定好,然后边做边找感觉,最后可能会有不一样的惊喜)。

  我这里采用了时钟的背景图片,第一我觉得图片好看,第二我觉得应该先实现主要的功能再考虑画图(总归来说就是有点懒,哈哈~)。好了,废话不多说啦,进入正题。

  一、图片演示

  

  二、html代码

<div class="box">
<div class="clock"> <!-- 时钟背景图 -->
<div class="second-hand"></div> <!-- 秒针 -->
<div class="minute-hand"></div> <!-- 分针 -->
<div class="hour-hand"></div> <!-- 时针 -->
</div>
</div>

  三、css代码

        .box {margin: 10px auto; width: 894px; height: 863px;}
.clock {position: relative; width: 894px; height: 863px; background: url("images/bg.png") no-repeat;}
.second-hand,.minute-hand,.hour-hand {position: absolute; left: 50%; margin-left: -6px; top: -13px; width: 20px; height: 894px; background: url("images/clock_needle.png") no-repeat;}
/* 三根针的长度和时钟的宽度保持一致(最长的),这样可以实现以中心旋转 */
.second-hand {background-position: -1px 59px; z-index:;}
.minute-hand {background-position: -25px 56px; z-index:;}
.hour-hand {background-position: -54px 56px; z-index:;}

  分析:

  这里需要注意的是,要让秒针、分针和时针的长度和时钟的宽度(长度,谁长就和谁一样)一致(时钟最好是正方形的),因为图片旋转的时候,是以图片中心为圆心旋转。

  四、js代码

        $(function(){
var $second = $(".second-hand"), /* 秒针 */
$minute = $(".minute-hand"), /* 分针 */
$hour = $(".hour-hand"), /* 时针 */
nowTime = function(){ /* 执行函数 */
/* 得到现在的小时,分钟和秒 */
function getTime(){
var now = new Date();
return {
hours: now.getHours() + now.getMinutes() / 60, /* 小时数,包括分钟数 */
minutes: now.getMinutes() + now.getSeconds() / 60, /* 分针数,包括秒数 */
seconds: now.getSeconds() /* 秒数 */
}
}
var _date = getTime(); /* 接收的时间对象 */
/* 秒针,一圈360度总共是60秒(60格),一秒(一格)就是6度,乘以6的主要原因就是秒数乘以一格的度数等于总度数 */
var _secondRotate = Math.floor(_date.seconds) * 6;
/* 分针,一圈360度总共是60分钟,和秒数解释类似 */
var _minuteRotate = _date.minutes * 6;
/* 时针,一圈360度是12个小时,一个小时就是30度(其实也是5格),小时数乘以一小时的度数就是总度数。但是要考虑大于12的小时数,这里采取整除12的方发即可实现 */
var _hourRotate = (_date.hours % 12) * 30;
$second.css({"transform":"rotate("+_secondRotate+"deg)"}); /* 设置秒针旋转度 */
$minute.css({"transform":"rotate("+_minuteRotate+"deg)"}); /* 设置分针旋转度 */
$hour.css({"transform":"rotate("+_hourRotate+"deg)"}); /* 设置时针旋转度 */
} setInterval(nowTime,1000); /* 循环调用,一秒后调用一次 */ })

  分析:

  注释讲解的比较清楚,我这里主要强调一下如何获取秒针、分针和时针的旋转度数。

  秒针,旋转一圈总共是60秒,一圈也就是360°。这样想想,一秒就是6°,一圈总共是60格,一秒是一格也是6°,即秒针的旋转度数就是秒数乘以6。

  分针,分针的解释和秒针类似。它旋转一圈是60分钟,所以一分钟旋转6度,一分钟是一格也是6°,即分针的旋转度数是分钟数乘以6。

  时针,一圈是12个小时,一个小时应该是360/12=30°,所以时针的旋转角度为小时数乘以30°。也可以这样解释,一个小时占了5格,一格是6°,即小时数乘以5再乘以6则是时针旋转度数。

  查看演示 下载代码

  如果有哪里讲得不好或者不对的对方欢迎指正,谢谢~

jquery版时钟(css3实现)的更多相关文章

  1. 5JS树形结构菜单和jQuery版

    第一版JS版HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  2. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  3. js简单 图片版时钟,带翻转效果

    js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  4. jquery版小型婚礼(可动态添加祝福语)

    前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...

  5. Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)

    今天给大家分享一个JQuery版的REST辅助类,在一年前我分享过一个只能在IE环境下运行的REST辅助类:<JS编程之实体CRUD辅助类 >.为什么要推出JQuery版的CRUD辅助类呢 ...

  6. jQuery Animation实现CSS3动画

    jQuery Animation的工作原理是通过将元素的CSS样式从一个状态改变为另一个状态.CSS属性值是逐渐改变的,这样就可以创建动画效果.只有数字值可创建动画(比如 "margin:3 ...

  7. 编写Javascript类库(jQuery版

    编写Javascript类库(jQuery版) - 进阶者系列 - 学习者系列文章 Posted on 2014-11-13 09:29 lzhdim 阅读(653) 评论(1) 编辑 收藏 本系列文 ...

  8. jquery版 发同步请求 自定义头部信息 公共请求体

    //jquery版 发同步请求 function getData(url,param,fn){ var Authorization=localStorage.getItem("Authori ...

  9. 全自动数据表格JQuery版

    由于最近工作上有些变动,已经快一个月没有写博客了.上一篇博客[React]全自动数据表格组件——BodeGrid介绍了全自动数据表格的设计思路以及分享了一个react.js的实现.但是现实情况中为了节 ...

随机推荐

  1. uC/OS-II类型定义

    /*************************************************************************************************** ...

  2. C#------如何获取本机IP地址

    转载: http://www.narkii.com/club/thread-396944-1.html 代码: private string GetIpAddress() { string hostN ...

  3. Linux 的cp命令详解

    功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文件或目录, ...

  4. mysql主从复制 转

    mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复.需要两台机器,安装mysql,两台机器要在相通的局域网内,可以分布在不同的服务器上,也可以在一台服务器上启动多个服务 ...

  5. vim 快捷键 以及技巧

    [root@centos01 biji]# vim + 1.txt 打开文件,光标定位到最后一行[root@centos01 biji]# vim +5 1.txt 打开文件,光标定位到第5行[roo ...

  6. JSP简单标签开发

    一.继承自SimpleTag接口的自定义标签实现类称为简单标签,接口中5个方法 1.setJspContext方法 用于把JSP页面的PageContext对象传递给标签处理器对象 2.setPare ...

  7. JavaScript Engines

    http://openaphid.github.io/blog/2013/01/17/part-i-how-to-choose-a-javascript-engine-for-ios-and-andr ...

  8. OpenGL Registry

    https://www.opengl.org/registry/ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api ...

  9. Sencha Touch 2.2 Store Proxy 异常监控

    移动端到服务端通信往往会发生很多莫名的异常情况,如何有效的监控proxy异常,给用户友好的用户体验呢? Proxy给我提供了异常exception的监听事件,只需要监控该项目即可. Sencha To ...

  10. ecshop变量介绍

    获得商品的信息,get_goods_info($goods_id) 获取前10销量排名,get_top10()