卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

基于CSS3+jQuery的動態(tài)時鐘制作過程

本文譯自O(shè)ld School Clock with CSS3 and jQuery,主要講述了如何利用CSS3和jQuery制作一個漂亮的動態(tài)時鐘。Hi,大家好,我叫Toby Pitman,Chris

本文譯自O(shè)ld School Clock with CSS3 and jQuery,主要講述了如何利用CSS3和jQuery制作一個漂亮的動態(tài)時鐘。

Hi,大家好,我叫Toby Pitman,Chris曾邀請我寫一篇關(guān)于最近我在論壇上發(fā)的一些實(shí)驗(yàn)成果,于是當(dāng)我在WebKit blog和saw an article上看一些新的CSS3動畫時,有一個rotate屬性深深地吸引了我的眼球,于是就開始著手寫這篇文章了。我當(dāng)時就在思考什么東西可以在網(wǎng)頁上旋轉(zhuǎn)呢(貌似GIF動畫圖片可以),于是我有個點(diǎn)子--是的,時鐘不就是可以旋轉(zhuǎn)的嗎!開始!CSS3 Transform:rotateTransform:rotate是CSS3的一個新特性,它可以讓你...當(dāng)然,是實(shí)現(xiàn)一些旋轉(zhuǎn)的玩意兒啦。Transform也可以讓你在網(wǎng)頁上實(shí)現(xiàn)縮放、傾斜、移動對象。而且上面的這些都可以通過Transition屬性實(shí)現(xiàn)動畫效果。聽起來很熟悉么?是的,當(dāng)然,和以前一樣,我們將依然結(jié)合jQuery來實(shí)現(xiàn)頁面上元素的動畫效果。因?yàn)槭褂胘Query可以方便的操作CSS從而 得到動畫效果。聯(lián)想一下a:hover效果,你就會對如何實(shí)現(xiàn)這個例子產(chǎn)生一些想法。它遠(yuǎn)沒有jQuery和Mootools那么強(qiáng)大,但已經(jīng)足夠做一些 很酷的東西了。請注意:這個時鐘例子只能運(yùn)行在Firefox 3.1+、Safari 3+和Chrome瀏覽器上。時鐘圖片首先,我們需要準(zhǔn)備一些圖片來作為時鐘的圖形界面。這里我們用一張鐘盤圖片和三張指針圖片,其中運(yùn)動的指針我們是用photoshop切割出來的600×30的圖片,并將其豎直放置。然后利用rotate屬性讓其繞中心點(diǎn)旋轉(zhuǎn)。當(dāng)然,指針使用的是透明的PNG格式圖片。

HTML標(biāo)記這個時鐘的HTML標(biāo)記非常簡單,只用了ul列表,每一個列表項(xiàng)(li)分別對應(yīng)著3根運(yùn)動指針,并且給其分配相應(yīng)的id,代碼如下:HTML標(biāo)記這個時鐘的HTML標(biāo)記非常簡單,只用了ul列表,每一個列表項(xiàng)(li)分別對應(yīng)著3根運(yùn)動指針,并且給其分配相應(yīng)的id,代碼如下:<ul id="clock"><li id="sec"></li><li id="hour"></li><li id="min"></li></ul>CSS代碼復(fù)制代碼#clock {position: relative;width: 600px;height: 600px;margin: 20px auto 0 auto;background: url(clockface.jpg);list-style: none;}#sec, #min, #hour {position: absolute;width: 30px;height: 600px;top: 0px;left: 285px;}#sec {background: url(sechand.png);z-index: 3;}#min {background: url(minhand.png);z-index: 2;}#hour {background: url(hourhand.png);z-index: 1;}復(fù)制代碼CSS代碼也是非常簡單,由于3根運(yùn)動指針尺寸相同,并且是從同一個位置開始運(yùn)動,所以我們?yōu)榱撕喕a就將它們的代碼寫在一起了。為了能讓時鐘內(nèi)部的指 針實(shí)現(xiàn)絕對定位(absolutely position)我們將ul設(shè)成相對定位(relativeposition)。好了,下面我們的jQuery就要上場了。The jQuery JavaScript這里Javascript主要完成以下工作:獲取當(dāng)前的時間計(jì)算并添加每個元素的CSS樣式(旋轉(zhuǎn)角度)周期性地設(shè)置CSS樣式獲取時間你也許會將PHP中的時間和日期等同起來,剛開始的時候我的第一想法也是利用PHP,然而后來我發(fā)現(xiàn)javascript中也有構(gòu)造日期和時間的功能函數(shù)。只是需要注意的是javascript獲取的是本地時間并不是服務(wù)器時間。首先我將用Date()函數(shù)獲取日期信息并將其賦給一個變量,我們可以通過GetSeconds(), GetMinutes()或GetHours()獲取3根指針的信息,如下代碼:var seconds = new Date().getSeconds();上面的代碼會返回一個0到59的數(shù)字并將其分配給seconds變量。獲取角度接下來我將計(jì)算每根指針的角度。我們將每一周分成60等分,所以只要360/60就得到每一份是6,這意味著每一秒鐘或者每一分鐘指針都將前進(jìn)6度的角度。我們將計(jì)算結(jié)果保存到另一個變量中去,代碼如下:var sdegree = seconds * 6;對于時針的情況有點(diǎn)不同,因?yàn)槊恳粋€周期是12等分的,所以每小時時針前進(jìn)的角度是30度:360/12=30。既然這樣如果時針按這個增量運(yùn)動那就簡單 了,可是卻不是這么簡單的。它要根據(jù)分針的值運(yùn)動一小段距離,比如3:30的話時針會在3和4的中間,然而我們該如何來做呢,請看下面的代碼:var hdegree = hours * 30 + (mins / 2);基本上我們需要在hour后面加上分鐘數(shù)除以2的值,該值在0.5到29.5之間(rotate屬性支持浮點(diǎn)小數(shù)值)。例如:2.40 將得到: 2 * 30 = 60 degrees + 40 / 2 = 20 degrees --------- --- ---------- hdegree = 80 degrees 設(shè)置樣式下面是CSS3 rotate的CSS樣式表代碼:#sec {-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}這里我們改用jQuery來動態(tài)添加上面的樣式:$("#sec").css({"-moz-transform" : "rotate(45deg)", "-webkit-transform" : "rotate(45deg)"});這里我們的一個問題是如何將'sdegree'變量替換樣式表中的45deg,可以這樣做:var srotate = "rotate(" + sdegree + "deg)";jquery代碼就修改成如下:$("#sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});將所有代碼整合起來所有的jQuery代碼如下:復(fù)制代碼$(document).ready(function() {setInterval( function() {var seconds = new Date().getSeconds();var sdegree = seconds * 6;var srotate = "rotate(" + sdegree + "deg)";$("#sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});}, 1000 );setInterval( function() {var hours = new Date().getHours();var mins = new Date().getMinutes();var hdegree = hours * 30 + (mins / 2);var hrotate = "rotate(" + hdegree + "deg)";$("#hour").css({"-moz-transform" : hrotate, "-webkit-transform" : hrotate});}, 1000 );setInterval( function() {var mins = new Date().getMinutes();var mdegree = mins * 6;var mrotate = "rotate(" + mdegree + "deg)";$("#min").css({"-moz-transform" : mrotate, "-webkit-transform" : mrotate});}, 1000 );});復(fù)制代碼請注意這里我們用了Javascript中的setInterval函數(shù),這個函數(shù)每秒鐘都會執(zhí)行一次。一些獲取時間的變量也在這個函數(shù)中,所以每次調(diào)用都會自動更新時間值。這樣,我們的時鐘就可以工作了。

標(biāo)簽: