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 ...
随机推荐
- Servlet设置Cookie无效
项目中保存用户信息用到了Cookie,之前没有太注意,今天怎么设置Cookie都无效,断点跟了无数遍,都没有找出问题所在,明明发送Cookie的代码都有执行,可是愣是找不到Cookie发送到哪里去了, ...
- 我照着NancyFx官网的demo来做为什么会有错误呢????
我照着NancyFx官网的demo来做为什么会有错误呢???? >> csharp这个答案描述的挺清楚的:http://www.goodpm.net/postreply/csharp/10 ...
- PostgreSQL中流复制pg_basebackup做了什么
解压PostgreSQL源代码包后可以到如下路径:postgresql-9.2.4\src\backend\replication下可以看到,basebackup.c,另外还可以看到walreceiv ...
- CSS W3SCHOOLS
https://www.w3schools.com/csS/css3_buttons.asp
- c# 值类型 之枚举
1声明枚举(enum)类型的变量 enum 变量名 { //标识符列表中,元素与元素之间用 , 逗号分隔: 标识符列表 } 枚举列表中的每个符号代表一个整数值,一个比他前面符号大的整数值,默认情况下, ...
- Unified BeginFrame scheduling for Chrome
Unified BeginFrame scheduling for Chrome http://goo.gl/D1Qxrr Status: http://crbug.com/401331 and ht ...
- 为什么越来越少的开源项目使用 GPL 协议
原文出处: opensource 译文出处:oschina/王练 前段时间,我在 RedMonk 上看到了一篇来自 Stephen O’Grady 的有趣推文,介绍了开源许可证目前的状态,以 ...
- CodeForces 363B Fence
Fence Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Original ...
- xml里面product的值在哪里设置的?
转载请注明出处:http://blog.csdn.net/droyon/article/details/39890469 在进行Android应用程序开发时,善于运用xml中的product配置,能够 ...
- [python]pip坏了怎么办?
今天,给一位新同事配置pip,用get-pip.py安装之后.出现错误: raise DistributionNotFound(req) # XXX put more info here pkg_r ...