利用css3+js實現(xiàn)的可拖動簡易表盤時鐘

閑著無事寫了一個簡單的時鐘效果钉稍,給新學(xué)css3的朋友做個參考吧。
一棺耍、布局
布局很簡單贡未,就是一個表盤加上時、分蒙袍、秒三個指針俊卤。當然為了美觀期間還可以加一個表心。代碼如下:

<body>
    <div id="box">
        <div class="hour"></div>
        <div class="min"></div>
        <div class="sec"></div>
        <div class="cap"></div>
    </div>
</body>

二害幅、css樣式設(shè)置
代碼如下:

/*清除默認樣式*/
 *{
    margin:0;
    padding:0;
    list-style:none;
 }
 /*表盤樣式*/
#box{
    width:300px;
    height:300px;
    border:1px solid #000;
    border-radius:50%;
    position:absolute;
    left:300px; top:100px;
    background:#fff;
    box-shadow:1px 1px 5px #000;
 }
 /*表心樣式*/
 #box .cap{
    width:20px;
    border-radius:50%;
    height:20px;
    background:#999;
    position:absolute;
    left:50%; top:50%;
    margin:-10px 0 0 -10px;
 }
 /*時消恍、分、秒旋轉(zhuǎn)中心*/
#box div{
    transform-origin:center bottom;
 }
 /*時針樣式*/
#box .hour{
     width:14px;
     height:80px;
     background:#000;
     position:absolute;
     left:50%;top:50%;
     margin-left:-7px;
     margin-top:-80px;
     border-radius:50% 50% 0 0;
 }
 /*分針樣式*/
 #box .min{
     width:10px;
     height:100px;
     background:#282828;
     position:absolute;
     left:50%;top:50%;
     margin-left:-5px;
     margin-top:-100px;
     border-radius:50% 50% 0 0;
 }
 /*秒針樣式*/
 #box .sec{
     width:4px;
     height:120px;
     background:#f00;
     position:absolute;
     left:50%;top:50%;
     margin-left:-2px;
     margin-top:-120px;
 }
 /*一般表盤刻度樣式*/
.scale{
     width:4px;
     height:10px;
     background:#000;
     position:absolute;
     left:50%;
     margin-left:-2px;
     transform-origin:center 150px;
 }
/*整時表盤刻度樣式*/
.bs{
     width:6px;
     height:18px;
     background:#000;
     position:absolute;
     left:50%;
     margin-left:-3px;
     transform-origin:center 150px;
 }
/*時間數(shù)值樣式*/
 #box span em{
     margin-top:20px;
     width:100px;
     position:absolute;
     left:50%;
     margin-left:-50px;
     text-align:center;
     font-style:normal;
 }

三以现、js設(shè)置
當然僅有布局和css樣式狠怨,時鐘依然是個什么都沒有的圓约啊。js設(shè)置的第一步,就是循環(huán)創(chuàng)建60個表盤刻度佣赖。代碼如下:

//生成刻度
var N=60;
for(var i=0; i<N; i++){
    var oSpan=document.createElement('span');
    //判斷當前刻度是不是整時刻度恰矩,是的話加整時刻度的class;不是的話加一般刻度的class.
    if(i%5==0){
        oSpan.className='bs';
        //加整時刻度的數(shù)字憎蛤,如果是0的話讓其等于12.
        var num=i/5;
        num==0?num=12:num;
        oSpan.innerHTML='<em>'+num+'<\/em>';
        //60秒即60個小刻度將整個圓分成60份外傅,換成角度即360/60=6度;
        //每隔6度放一個刻度.
        oSpan.children[0].style.transform='rotate('+-i*6+'deg)';
    }else{
        oSpan.className='scale';
    }
        oBox.appendChild(oSpan);
        oSpan.style.transform='rotate('+6*i+'deg)';
 }

js設(shè)置的第二步俩檬,是設(shè)置當前時間及時針萎胰、分針、秒針的旋轉(zhuǎn)豆胸。
時針旋轉(zhuǎn)軌跡:
時針每走一個單位是5個小刻度即5*6=30度奥洼,我們知道時針不可能一下走完5個刻度巷疼,而當前時針在其一個單位中的比例和當前分針在60單位刻度中的比例是相等的晚胡。則想要讓其隨著分針的轉(zhuǎn)動慢慢旋轉(zhuǎn),只需要加上當前分針走過的刻度占60的百分比乘上時針一個單位的角度值30即可嚼沿。
分針旋轉(zhuǎn)軌跡:
同時針所走軌跡基本相同估盘,分針在其一個單位中的比例和當前秒針在60單位刻度中的比例是相等的,則想要讓其隨著秒針的轉(zhuǎn)動慢慢旋轉(zhuǎn)骡尽,只需要加上當前秒針走過的刻度占60的百分比乘上分針一個單位的角度值6即可遣妥。
想要讓秒針也像時針和分針一樣慢慢轉(zhuǎn)動的話也可以將其換算成同毫秒的比例值,基本原理是相同的攀细。
具體代碼如下:

function clock(){
    //獲取當前時間
    var oDate=new Date();
    var h=oDate.getHours();
    var m=oDate.getMinutes();
    var s=oDate.getSeconds();
    var ms=oDate.getMilliseconds();
    //設(shè)置旋轉(zhuǎn)軌跡
    oH.style.transform='rotate('+(h*30+m/60*30)+'deg)';
    oM.style.transform='rotate('+(m*6+s/60*6)+'deg)';
    oS.style.transform='rotate('+(s*6+ms/1000*6)+'deg)';
 }
//解決定時器剛開始開始延遲進行情況
clock();
setInterval(clock,30);
```
 現(xiàn)在一個簡單的表盤時鐘就做好了箫踩,如果你覺得不夠的話,還可以給表盤加上一個拖拽效果.代碼如下:
```
 drag(oBox);
 //拖拽
 function drag(oDiv){
    oDiv.onmousedown=function(ev){
        var oEvent=ev || event;
        var disX=oEvent.clientX-oDiv.offsetLeft;
        var disY=oEvent.clientY-oDiv.offsetTop;
        document.onmousemove=function(ev){
             var oEvent=ev || event;
             oDiv.style.left=oEvent.clientX-disX+'px';
             oDiv.style.top=oEvent.clientY-disY+'px';
         };
        document.onmouseup=function(){
             document.onmousemove=null;
             document.onmouseup=null;
             oDiv.releaseCapture && oDiv.releaseCapture();
        };
       oDiv.setCapture && oDiv.setCapture();
        return false;
   }
 }
```
最終效果如圖
![clock.png](http://upload-images.jianshu.io/upload_images/3871689-a6adf70ea40a7e3f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

還等什么谭贪,快來試試吧境钟!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市俭识,隨后出現(xiàn)的幾起案子慨削,更是在濱河造成了極大的恐慌,老刑警劉巖套媚,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缚态,死亡現(xiàn)場離奇詭異,居然都是意外死亡堤瘤,警方通過查閱死者的電腦和手機玫芦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來本辐,“玉大人姨俩,你說我怎么就攤上這事蘸拔。” “怎么了环葵?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵调窍,是天一觀的道長。 經(jīng)常有香客問我张遭,道長邓萨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任菊卷,我火速辦了婚禮缔恳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洁闰。我一直安慰自己歉甚,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布扑眉。 她就那樣靜靜地躺著纸泄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腰素。 梳的紋絲不亂的頭發(fā)上聘裁,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音弓千,去河邊找鬼衡便。 笑死,一個胖子當著我的面吹牛洋访,可吹牛的內(nèi)容都是我干的镣陕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼姻政,長吁一口氣:“原來是場噩夢啊……” “哼呆抑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扶歪,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤理肺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后善镰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妹萨,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年炫欺,在試婚紗的時候發(fā)現(xiàn)自己被綠了乎完。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡品洛,死狀恐怖树姨,靈堂內(nèi)的尸體忽然破棺而出摩桶,到底是詐尸還是另有隱情,我是刑警寧澤帽揪,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布硝清,位于F島的核電站,受9級特大地震影響转晰,放射性物質(zhì)發(fā)生泄漏芦拿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一查邢、第九天 我趴在偏房一處隱蔽的房頂上張望蔗崎。 院中可真熱鬧,春花似錦扰藕、人聲如沸缓苛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽未桥。三九已至,卻和暖如春庐完,著一層夾襖步出監(jiān)牢的瞬間钢属,已是汗流浹背徘熔。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工门躯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酷师。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓讶凉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親山孔。 傳聞我的和親對象是個殘疾皇子懂讯,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容