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页面布局(listview填充中间)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...
- UI Framework-1: Aura Overview
Aura Overview From the perspective of the user, Aura provides Window and Event types, as well as a ...
- ArchLinux 设置时间同步和硬件时间同步错误 No usable clock interface found
笔记本不知道怎么了,总是时间对不上 硬件时间也设置不了,只能时间同步了 手动时间同步 ntpdate即可,ntp服务器在这里用这两个就好了 cn.ntp.org.cn 或 edu.ntp.org.cn ...
- Perl模块利用CPAN在线安装自动化
需要解决2个问题: 1. 如何与CPAN交互:利用perl –MCPAN –e ‘install 模块’ 2. 如何安装指定的版本:作者/模块-版本.tar.gz How to install a ...
- centeros 7配置mailx使用外部smtp服务器发送邮件
发送邮件的两种方式: 1.连接现成的smtp服务器去发送(此方法比较简单,直接利用现有的smtp服务器比如qq.新浪.网易等邮箱,只需要直接配置mail.rc文件即可实现) 2.自己搭建私有的smtp ...
- 紫书 习题 10-10 UVa 1645(递推)
除了根节点以外,有n-1个节点,然后就看n-1的因数有那些,所有因数加起来(递推)就好了. #include<cstdio> #define REP(i, a, b) for(int i ...
- P1872 回文串计数(回文树)
题目描述 小a虽然是一名理科生,但他常常称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名其妙的热爱,这也促使他走向了以记忆量大而闻名的生物竞赛.然而,他很快发现这并不能满足他热爱背诵的心,但 ...
- [HAOI2006]旅行(并查集)
寒假填坑五十道省选题——第五道 [HAOI2006]旅行 题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路 ...
- 【Codeforces Round #239 (Div. 1) B】 Long Path
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] DP,设f[i]表示第一次到i这个房间的时候传送的次数. f[1] = 0,f[2] = 2 考虑第i个位置的情况. 它肯定是从i- ...
- 千千万万的IT开发project师路在何方
已经找不到该文章的最初出处了,有找到的人请告诉我.谢谢~~ 千千万万的IT开发project师路在何方 2007-06-25 21:41 恭喜,你选择开发project师作为自已的职业! 悲哀.你选择 ...