canvas炫酷转盘时钟

简介: canvas炫酷转盘时钟,拿来即用
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><title>转盘时钟</title></head><style>html{
background: #000;
color: #666;
font-size: 12px;
overflow:hidden;
    }
    *{
margin: 0;
padding: 0;
    }
span{
display: block;
float: left;
    }
.on{
color: #fff;
    }
.wrapper{
width: 200px;
height: 200px;
position: absolute;
left:50%;
top:50%;
margin-top: -100px;
margin-left: -100px;
    }
.wrapper.timebox{
position: absolute;
width: 200px;
height: 200px;
top: 0;
left:0;
border-radius: 100%;
transition: all0.5s;
    }
.timeboxspan{
transition: all0.5s;
float: left;
    }
.wrapper.timeboxspan{
position: absolute;
left:50%;
top:50%;
width: 40px;
height: 18px;
margin-top: -9px;
margin-left: -20px;
text-align: right;
    }
</style><body><divid="wrapper"><divclass="timebox yuebox"id="yueBox"></div><divclass="timebox riqiBox"id="riqiBox"></div><divclass="timebox hourbox"id="hourbox"></div><divclass="timebox minutebox"id="minutebox"></div><divclass="timebox secondbox"id="secondbox"></div></div><script>letwrapper=document.getElementById("wrapper");
letyueBox=document.getElementById("yueBox");
letriqiBox=document.getElementById("riqiBox");
lethourbox=document.getElementById("hourbox");
letminutebox=document.getElementById("minutebox");
letsecondbox=document.getElementById("secondbox");
/*    * 找所有的东西标签函数    * */letfindSiblings=function( tag ){
letparent=tag.parentNode;
letchilds=parent.children;
letsb= [];
for(leti=0 ; i<=childs.length-1 ; i++){
if( childs[i]!==tag){
sb[sb.length] =childs[i];
            }
        }
returnsb ;
    };
/*    * 去掉所有兄弟的类    * */letremoveSiblingClass=function( tag ){
letsb=findSiblings( tag );
for(leti=0 ;  i<=sb.length-1 ; i++){
sb[i].className="";
        }
    };
/*    * 初始化月份函数    * */letinitMonth=function(){
for(leti=1; i<=12; i++){
letspan=document.createElement("span");
span.innerHTML=i+"月";
yueBox.appendChild( span );
        }
    };
// 初始化日期letinitDate=function(){
for(leti=1; i<=31; i++){
letspan=document.createElement("span");
span.innerHTML=i+"日";
riqiBox.appendChild( span );
        }
    };
// 初始化小时,分钟,秒letinitHour=function(){
for(leti=0; i<=23; i++){
leth=i ;
letspan=document.createElement("span");
if( h<10){
h="0"+h;
            }
span.innerHTML=h+"点";
hourbox.appendChild( span );
        }
    };
letinitMinute=function(){
for(leti=0; i<=59; i++){
letf=i ;
letspan=document.createElement("span");
if( f<10){
f="0"+f;
            }
span.innerHTML=f+"分";
minutebox.appendChild( span );
        }
    };
letinitSecond=function(){
for(leti=0; i<=59; i++){
letmiao=i ;
letspan=document.createElement("span");
if( miao<10){
miao="0"+miao;
            }
span.innerHTML=miao+"秒";
secondbox.appendChild( span );
        }
    };
// 时间文字样式切换函数letchangeTime=function(tag){
tag.className="on";
removeSiblingClass( tag );
    };
/*    * 初始化日历函数    * */letinitRili=function(){
initMonth(); // 初始化月份initDate(); // 初始化日期initHour(); // 小时initMinute();
initSecond();
    };
/*    * 展示当前时间    * 参数:mydate 时间对象    * */letshowNow=function( mydate ){
letyue=mydate.getMonth() ;
letriqi=mydate.getDate();
lethour=mydate.getHours()  ;
letminute=mydate.getMinutes();
letsecond=mydate.getSeconds();
// 时间文字样式切换函数changeTime( yueBox.children[yue] );
changeTime( riqiBox.children[riqi-1] );
changeTime( hourbox.children[hour] );
changeTime( minutebox.children[minute] );
changeTime( secondbox.children[second] );
    };
// 展示时间圆圈函数// tag:目标// num:数字数量// dis:圆圈半径lettextRound=function(tag,num,dis){
letspan=tag.children ;
for(leti=0 ; i<=span.length-1; i++){
span[i].style.transform="rotate("+ (360/span.length)*i+"deg)  translateX("+dis+"px)" ;
        }
    };
/*    * 旋转指定“圆圈”指定度数    * */letrotateTag=function(tag , deg){
tag.style.transform="rotate("+deg+"deg)";
    };
letmain=function(){
initRili(); // 初始化日历setInterval(function(){
letmydate=newDate();
showNow( mydate ); // 展示当前时间        },1000);
//  n秒后,摆出圆形setTimeout(function(){
wrapper.className="wrapper";
textRound(yueBox,12,40);
textRound(riqiBox,31,80);
textRound(hourbox,24,120);
textRound(minutebox,60,160);
textRound(secondbox,60,200);
setInterval(function(){
letmydate=newDate();
rotateTag( yueBox , -30*mydate.getMonth());
rotateTag( riqiBox , -360/31*(mydate.getDate()-1) );
rotateTag( hourbox , -360/24*mydate.getHours());
rotateTag( minutebox , -6*mydate.getMinutes());
rotateTag( secondbox , -6*mydate.getSeconds());
            },1000)
        },0)
    };
main();
</script></body></html>
目录
相关文章
|
4月前
|
前端开发 JavaScript
canvas系列教程06 ——边界检测、碰撞检测
canvas系列教程06 ——边界检测、碰撞检测
41 2
|
5月前
|
图形学
【unity小技巧】最简单的FPS游戏准心跳动动画控制
【unity小技巧】最简单的FPS游戏准心跳动动画控制
37 0
|
6月前
|
移动开发 前端开发 HTML5
使用canvas绘制超炫时钟
使用canvas绘制超炫时钟
30 3
使用canvas绘制超炫时钟
|
前端开发 JavaScript
CSS动画篇之炫酷时钟之时钟墙
CSS动画篇之炫酷时钟之时钟墙
84 1
|
C++ 计算机视觉 Python
Qt+C++跑马灯-指示灯-风扇-虚线灯带-动画仿真
这篇博客针对<<Qt+C++跑马灯-指示灯-风扇-虚线灯带-动画仿真>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
188 0
|
前端开发 JavaScript 容器
前端|利用<canvas>画布制作地球轨道
前端|利用<canvas>画布制作地球轨道
228 0
|
前端开发
canvas颗粒时钟
使用canvas做一个颗粒时钟,附带动态效果
94 0
canvas颗粒时钟
|
移动开发 前端开发 Shell
使用canvas绘制时钟
使用canvas绘制时钟
88 0
|
Java
Swing时钟动画绘制
本文利用Java原生Swing技术绘制一个时钟动画。
125 0
Swing时钟动画绘制
|
JavaScript 前端开发 算法
html+css+JavaScript实现简洁的圆形时钟数字时钟+指针时钟
使用前端三件套实现一个实时跟新的时钟,其中包括电子时钟和刻度时钟
310 0
html+css+JavaScript实现简洁的圆形时钟数字时钟+指针时钟