css+ js 实现圆环时钟

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>多彩炫酷环形时钟效果</title><style type="text/css">#fancyClock{ margin:40px auto; height:200px; border:1px solid #111111; width:600px;}.clock{ /* 时钟div */ height:200px; width:200px; position:relative; overflow:hidden; float:left;}.clock .rotate{ /* 两个旋转的div,每个都分为左右两部分 */ position:absolute; width:200px; height:200px; top:0; left:0;}.rotate.right{ display:none; z-index:11;}.clock .bg, .clock .front{ width:100px; height:200px; position:absolute; top:0;}.clock .display{ /* 小时,分钟,秒钟的显示 */ position:absolute; width:200px; font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif; z-index:20; color:#F5F5F5; font-size:60px; text-align:center; top:55px; left:0; /* CSS3 文字阴影 */ text-shadow:4px 4px 5px #333333;}/* 左半边部分 */.clock .bg.left{ left:0; }/* 每个不同颜色的背景图: */.orange .bg.left{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_orange.png) no-repeat left top; }.green .bg.left{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_green.png) no-repeat left top; }.blue .bg.left{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_blue.png) no-repeat left top; }/* 右边部分 */.clock .bg.right{ left:100px; }.orange .bg.right{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_orange.png) no-repeat right top; }.green .bg.right{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_green.png) no-repeat right top; }.blue .bg.right{ background:url(http://image.zhangxinxu.com/image/blog/201008/bg_blue.png) no-repeat right top; }.clock .front.left{ left:0; z-index:10;}</style></head><body><div id="fancyClock"> <div class="orange clock"> <div class="display" id="hours">00</div> <div class="front left"></div> <div class="rotate left" id="orangeRotateLeft"> <div class="bg left"></div> </div> <div class="rotate right" id="orangeRotateRight"> <div class="bg right"></div> </div> </div> <div class="blue clock"> <div class="display" id="minuts">00</div> <div class="front left"></div> <div class="rotate left" id="blueRotateLeft"> <div class="bg left"></div> </div> <div class="rotate right" id="blueRotateRight"> <div class="bg right"></div> </div> </div> <div class="green clock"> <div class="display" id="seconds">00</div> <div class="front left"></div> <div class="rotate left" id="greenRotateLeft"> <div class="bg left"></div> </div> <div class="rotate right" id="greenRotateRight"> <div class="bg right"></div> </div> </div></div><script type="text/javascript">(function(){ var $ = function(id){ return document.getElementById(id); }; var o = { hour: $("hours"), //小时数值对象 minu: $("minuts"), //分钟数值对象 sec: $("seconds"), //秒钟数值对象 orgl: $("orangeRotateLeft"), //黄色旋转左半区 orgr: $("orangeRotateRight"), //黄色旋转右半区 bluel: $("blueRotateLeft"), //蓝色旋转左半区 bluer: $("blueRotateRight"), //蓝色旋转右半区 sec: $("seconds"), //秒钟数值对象 greenl: $("greenRotateLeft"), //绿色旋转左半区 greenr: $("greenRotateRight") //绿色旋转右半区 }; var f = { css: function(o,key){ return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key]; }, zero: function(n, top){ n = parseInt(n, 10), top = top || "00"; if(n > 0){ if(n <= 9){ n = "0" + n; } return String(n); }else{ return top.toString(); } }, angle: function(v, total){ var scale = v / total, offsetx = 0, offsety = 0, an; var angle = scale * 360; //当前角度值 //IE矩阵角度值计算 var m11 = Math.cos(Math.PI*2 / 360 * angle) var m21 = Math.sin(Math.PI*2 / 360 * angle); if(angle > 90){ an = angle - 90; }else{ an = angle; } offsety = offsetx = (200 - 200 * Math.sqrt(2) * Math.cos(Math.PI / 180 * Math.abs(an - 45))) / 2 ; return { trans: "rotate("+angle+"deg)", ie: "progid:DXImageTransform.Microsoft.Matrix(M11="+m11+",M12=-"+m21+",M21="+m21+",M22="+m11+",SizingMethod='auto expand',FilterType='nearest neighbor')", offset: { x: offsetx, y: offsety } }; }, cartoon: function(l, r, v, part){ var total = part * 2, angleV, anglePart; if(v <= part && v > 0){ angleV = f.angle(v, total); l.style.display = "block"; l.style.filter = angleV.ie; l.style.MozTransform = l.style.WebkitTransform = l.style.transform = angleV.trans; r.style.display = "none"; //ie 旋转非居中旋转的修复 if(document.all){ l.style.left = angleV.offset.x + "px"; l.style.top = angleV.offset.y + "px"; } }else{ v = Math.abs(v - part); angleV = f.angle(v, total); anglePart = f.angle(part, total); l.style.display = "block"; l.style.filter = anglePart.ie; l.style.MozTransform = l.style.WebkitTransform = l.style.transform = anglePart.trans; r.style.display = "block"; r.style.filter = angleV.ie; r.style.MozTransform = r.style.WebkitTransform = r.style.transform = angleV.trans; if(document.all){ r.style.left = angleV.offset.x + "px"; r.style.top = angleV.offset.x + "px"; } } }, ui: function(){ var mytime = new Date(); var h = mytime.getHours(), m = mytime.getMinutes(), s = mytime.getSeconds(); o.hour.innerHTML = f.zero(h); o.minu.innerHTML = f.zero(m, 60); o.sec.innerHTML = f.zero(s, 60); f.cartoon(o.orgl, o.orgr, h, 12); f.cartoon(o.bluel, o.bluer, m, 30); f.cartoon(o.greenl, o.greenr, s, 30); setTimeout(f.ui, 1000); } }; f.ui();})();</script></body></html>css+ js 实现圆环时钟的更多相关文章
- 转 CSS3+js实现多彩炫酷旋转圆环时钟效果
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 【CSS3】纯CSS代码实现模拟时钟,+js对时功能。
使用CSS3纯代码来实现模拟时钟,及指针动画功能. 在这里主要使用到css3一些基本元素: border-radius:圆角边框,画圆形:表盘 Transform:变换,旋转,扭曲:刻度盘,指针形状 ...
- js动态数字时钟
js动态数字时钟 主要用到知识点: 主要是通过数组的一些方法,如:Array.from() Array.reduce() Array.find() 时间的处理和渲染 js用到面向对象的写法 实现的功能 ...
- js数字滑动时钟
js数字滑动时钟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
- CSS & JS 制作滚动幻灯片
==================纯CSS方式==================== <!DOCTYPE html> <html> <head> <met ...
- 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决
Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty ...
- Css Js Loader For Zencart
Css Js Loader 描述:这个插件很早就出来了,可能知道人非常少 这个插件的功能是整合所有的网站的CSS和JS内容到一个文件里边. 因为CSS和JS文件到了一个文件,加快了程序的运行 在配合其 ...
- 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)
之前在写详情页的时候,如下图 因为自己嫌麻烦,就去看其他网站是怎么写的,想直接拿来用,后来看来看去觉得写得很麻烦,于是最后还是决定自己写,附上HTML+CSS+JS代码,一条龙一站式贴心服务2333 ...
随机推荐
- Android中的Junit测试
在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...
- 集合TreeSet的使用
集合中的TreeSet是集合体系结构中的底层实现,是Collection的孙子,Set的儿子.TreeSet除拥有父接口的特点外,还有其自身的特点.下面就看看TreeSet的排序是怎么实现的.从它的构 ...
- 《剑指offer》合并两个排序的链表
一.题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 二.输入描述 两个递增排序的链表 三.输出描述 合并成一个递增排序的链表 四.牛客网提供的框 ...
- Perceptron Learning Algorithm(python实现)
一.概论 对于给定的n维(两种类型)数据(训练集),找出一个n-1维的面,能够"尽可能"地按照数据类型分开.通过这个面,我们可以通过这个面对测试数据进行预测. 例如对于二维数据,要 ...
- js 快捷键设置
function hotkey() { var a=window.event.keyCode; if((a==65)&&(event.ctrlKey)) { alert("你 ...
- users---显示当前登录系统的所有用户的用户列表
users命令用于显示当前登录系统的所有用户的用户列表.每个显示的用户名对应一个登录会话.如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数. 语法 users(选项) 选项 --help: ...
- 用Google Chrome 浏览器打开Unity打包的WebGL
方法一: 直接build and run 方法二: 步骤: 1.打开浏览器的属性 2.在目标的位置添加--allow-file-access-from-files, 注意--allow-file-ac ...
- Spring Tool Suit安装virgo server插件、virgo的下载
virgo-tomcat原先是Spring DM Server,后来转eclipse社区维护 安装教程:http://osgi.com.cn/article/7289514 virgo-tomcat各 ...
- Windows远程登录Linux
本文以Ubuntu Kylin1404为例,说明如何通过Windows远程登录Linux. 首先,要确保Ubuntu上SSH服务执行正常.默认情况下,Ubuntu已装有SSHclient.比方输入ss ...
- Nrf51822中设置128bit UUID service
Nrf51822中设置128bit UUID service uint32_tble_dajia_add_service(ble_dajia_t *p_wechat) { uint32_t err_c ...