基于HTML5+CSS3實(shí)現(xiàn)簡單的時(shí)鐘效果
目的:
利用html5,css實(shí)現(xiàn)鐘擺效果
知識(shí)點(diǎn):
1) 利用position/left/top和calc()實(shí)現(xiàn)元素的水平和垂直居中;
2) 利用CSS3的animation/transform/transform-origin屬性定義動(dòng)畫;
3) 利用transform-origin實(shí)現(xiàn)旋轉(zhuǎn)原點(diǎn)的圓心調(diào)整
廢話不多說了,直接看代碼吧,具體代碼如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
li{
list-style:none;
}
#box{
width: 400px;
height: 400px;
position: absolute;
top:calc(50% - 200px);
left:calc(50% - 200px);
border: 2px solid palegoldenrod;
}
#dial{
width: 200px;
height: 200px;
position: absolute;
top:calc(50% - 100px);
left:calc(50% - 100px);
border: 2px solid cyan;
border-radius: 50%;
}
.scaleIndex{
width: 4px;
height: 12px;
position: absolute;
top: 0;
left: calc(50% - 2px);
background-color: gray;
transform-origin: 2px 100px;
}
.angle30{transform : rotate(30deg);}
.angle60{transform : rotate(60deg);}
.angle90{transform : rotate(90deg);}
.angle120{transform : rotate(120deg);}
.angle150{transform : rotate(150deg);}
.angle180{transform : rotate(180deg);}
.angle210{transform : rotate(210deg);}
.angle240{transform : rotate(240deg);}
.angle270{transform : rotate(270deg);}
.angle300{transform : rotate(300deg);}
.angle330{transform : rotate(330deg);}
#fixPoint{
width: 10px;
height: 10px;
position: absolute;
top:calc(50% - 5px);
left:calc(50% - 5px);
background-color: cadetblue;
border-radius: 50%;
}
#hourHand{
width: 6px;
height: 70px;
position:absolute;
top: 40px;
left: calc(50% - 3px);
background-color: darkblue;
transform-origin: 50% 60px;
}
#minuteHand{
width: 4px;
height: 75px;
position:absolute;
top: 35px;
left: calc(50% - 2px);
background-color: yellow;
transform-origin: 50% 65px;
}
#secondHand{
width: 2px;
height: 90px;
position:absolute;
top: 20px;
left: calc(50% - 1px);
background-color: red;
transform-origin: 50% 80px;
}
</style>
</head>
<body>
<div id = "box">
<div id = 'dial'>
<ul id = "scale">
<li class = "scaleIndex"></li>
<li class = "scaleIndex angle30"></li>
<li class = "scaleIndex angle60"></li>
<li class = "scaleIndex angle90"></li>
<li class = "scaleIndex angle120"></li>
<li class = "scaleIndex angle150"></li>
<li class = "scaleIndex angle180"></li>
<li class = "scaleIndex angle210"></li>
<li class = "scaleIndex angle240"></li>
<li class = "scaleIndex angle270"></li>
<li class = "scaleIndex angle300"></li>
<li class = "scaleIndex angle330"></li>
</ul>
<div id = "fixPoint"></div>
<div id = "hourHand"></div>
<div id = "minuteHand"></div>
<div id = "secondHand"></div>
</div>
</div>
<script type = 'text/javascript' src = 'js/jquery-3.2.1.js'></script>
<script type = "text/javascript">
window.onload = function(){
var hourHand = document.getElementById('hourHand');
var minuteHand = document.getElementById('minuteHand');
var secondHand = document.getElementById('secondHand');
setInterval(function(){
var currentTime = new Date();
var hourValue = currentTime.getHours();
var hourAngle = hourValue / 24 * 360 + 'deg';
var minuteValue = currentTime.getMinutes();
var minuteAngle = minuteValue / 60 * 360 + 'deg';
var secondValue = currentTime.getSeconds();
var secondAngle = secondValue / 60 * 360 + 'deg';
console.log(hourAngle);
// 方法一:利用jquery的css()增加屬性
var cmdHour = 'rotate('+ hourAngle +')';
$('#hourHand').css({transform:'rotate('+ hourAngle +')'});
var cmdMinute = 'rotate('+ minuteAngle +')';
$('#minuteHand').css({transform:cmdMinute});
var cmdSecond = 'rotate('+ secondAngle +')';
$('#secondHand').css({transform:cmdSecond});
// 方法二:利用DOM元素的style屬性設(shè)置
// hourHand.style.transform = 'rotate('+ hourAngle + ')';
// minuteHand.style.transform = 'rotate('+ minuteAngle + ')';
// secondHand.style.transform = 'rotate('+ secondAngle + ')';
},1000);
}
</script>
</body>
</html>
總結(jié)
以上所述是小編給大家介紹的基于HTML5+CSS3實(shí)現(xiàn)簡單的時(shí)鐘效果,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章

js+css3實(shí)現(xiàn)扁平化APP圖標(biāo)時(shí)鐘動(dòng)畫效果源碼
這是一款基于js+css3實(shí)現(xiàn)的扁平化APP圖標(biāo)時(shí)鐘動(dòng)畫效果源碼,是一款扁平化風(fēng)格APP時(shí)鐘動(dòng)態(tài)圖標(biāo)代碼,可事實(shí)顯示時(shí)鐘的時(shí)針、分針與秒針的運(yùn)行狀態(tài),畫面運(yùn)行效果流暢自然,2015-04-08CSS3+js實(shí)現(xiàn)簡單的時(shí)鐘特效
本文給大家分享的是使用CSS3結(jié)合js實(shí)現(xiàn)簡單的時(shí)鐘特效的代碼,主要是使用了css3 的transform屬性中的 rotate的旋轉(zhuǎn)效果和translate的位移效果的,這里推薦給大家,希望大家2015-03-18
一款很酷的CSS3翻頁時(shí)鐘動(dòng)畫特效源碼
今天我們來分享一款風(fēng)格獨(dú)特的時(shí)鐘特效源碼,這款CSS3時(shí)鐘動(dòng)畫是一款數(shù)字時(shí)鐘,時(shí)間每過一秒,相應(yīng)的位置就會(huì)像翻日歷一樣翻過去。另外,這款CSS3數(shù)字時(shí)鐘有點(diǎn)立體的效果,2014-11-22
jquery+CSS3實(shí)現(xiàn)的數(shù)字時(shí)鐘效果源碼
這是一款基于jquery+CSS3實(shí)現(xiàn)的數(shù)字時(shí)鐘效果源碼,可實(shí)現(xiàn)年月日及具體時(shí)間的顯示,還可以讀取并實(shí)時(shí)顯示本地時(shí)間。并且在秒數(shù)的顯示上有閃動(dòng)的效果2014-10-20
基于jQuery/CSS3實(shí)現(xiàn)的線性時(shí)鐘插件源碼
這是一款jQuery時(shí)鐘插件,它非常有特點(diǎn),即不是數(shù)字時(shí)鐘,也不是圓盤時(shí)鐘,而是基于線性的時(shí)鐘。其制作思想是把圓形的時(shí)鐘刻度展開成直線,把時(shí)針分針和秒針也變成可以滑動(dòng)2014-07-01
CSS3實(shí)現(xiàn)的圓盤時(shí)鐘效果動(dòng)畫源碼
這是一款超酷的純CSS3實(shí)現(xiàn)的圓盤時(shí)鐘動(dòng)畫效果,這款時(shí)鐘動(dòng)畫在初始化的時(shí)候就有動(dòng)畫特效,包括圓盤的形成,以及時(shí)鐘指針的形成,都賦予了極為炫酷的動(dòng)畫色彩。2014-06-20
jQuery+CSS3實(shí)現(xiàn)的一款超酷數(shù)字時(shí)鐘翻頁動(dòng)畫
一款數(shù)字時(shí)鐘,時(shí)間每過一秒,相應(yīng)的位置就會(huì)像翻日歷一樣翻過去2014-05-04
CSS3制作360度旋轉(zhuǎn)時(shí)鐘表不用任何圖片
一款完全利用CSS3實(shí)現(xiàn)鐘表,不是用任何的圖片和第三方的工具2014-04-14








