一程序員用javascript做了這個(gè)時(shí)鐘特效宗苍,面試秒過(guò)

哈哈稼稿,學(xué)習(xí)javascript的小伙伴,可以跟著我這篇文章的思路一起做一個(gè)時(shí)鐘特效出來(lái)讳窟,咋找工作也秒過(guò)让歼。代碼都齊全了。

這里還是要說(shuō)一下我的前端學(xué)習(xí)群:594959296丽啡,從我一個(gè)到現(xiàn)在的都是看我每一篇文章來(lái)的谋右,可以說(shuō)都是我們大前端的學(xué)霸啊,不定期分享干貨补箍。想學(xué)到東西的都可以來(lái)改执,歡迎初學(xué)和進(jìn)階中的小伙伴

今天這個(gè)時(shí)鐘效果圖:

項(xiàng)目分析

1、首先時(shí)鐘嘛馏予,肯定要獲取本地客戶端的時(shí)間天梧;

2、時(shí)鐘有 3 個(gè)指針霞丧,我們可以通過(guò)添加動(dòng)畫(huà)的方式讓它們圍繞中心點(diǎn)轉(zhuǎn)動(dòng)呢岗;

3、通過(guò)獲取到的 hour蛹尝、minute 和 second 值分別計(jì)算 時(shí)針后豫、分針和秒針的角度值;

HTML&CSS

布局

1突那、.box是為了布局的方便挫酿;

2、 然后每個(gè)指針都需要一個(gè)*-container容器 愕难。

添加 CSS 樣式

把背景加載進(jìn)來(lái)早龟,然后放在頁(yè)面中合適的位置上。

1猫缭、width: 35rem; height: 38rem;這個(gè)比例比較順眼吧葱弟;

2、.box使用 Flex 布局方式猜丹,并且使其中的.clock水中芝加、垂直方向都居中∩渲希看過(guò)第一天教程應(yīng)該都明白 Flex 布局的藏杖。

添加中心軸

使用 CSS3 中的 偽元素 為時(shí)鐘添加實(shí)心小圓點(diǎn)将塑,指針都圍著這個(gè)點(diǎn)轉(zhuǎn)。

1蝌麸、 這句content: '';是必須的点寥,不然這個(gè)偽元素不會(huì)顯示,即使指定了寬度和高度祥楣。

2开财、 由于相對(duì)定位是從元素的左上角開(kāi)始計(jì)算的,所以top: 50%; left: 50%;不能使這個(gè)小圓點(diǎn)在 Clock 的中心误褪,使用transform: translate(-50%,-50%);向左上方移動(dòng)自身寬度或高度的 50%

3、z-index: 10;是為了使這個(gè)小圓點(diǎn)在視圖的最上層碾褂,遮擋住指針交叉的地方

指針容器

1兽间、容器被放置在 Clock 的上方,但是并沒(méi)有樣式正塌,接下來(lái)就可以創(chuàng)建指針了嘀略!

添加指針

1、分別添加時(shí)針乓诽、分針和秒針帜羊。

2、 使用%這種單位可以更好地適應(yīng)不同的屏幕鸠天。

3讼育、transform-origin: 50% 90%;規(guī)定指針旋轉(zhuǎn)的位置為:X 方向的中心線 和 Y 方向的 90% 處這條線的交叉點(diǎn)。(具體看圖吧)

4稠集、 這里在定位的時(shí)候把自身的寬度計(jì)算在內(nèi)了奶段,所以就不必在往左上角移動(dòng)了。

動(dòng)畫(huà)

目前為止剥纷,這個(gè) Clock 還是沒(méi)有功能的痹籍,我們來(lái)讓它動(dòng)起來(lái)。

定義動(dòng)畫(huà)規(guī)則

1晦鞋、這里用@keyframes規(guī)則定義了一個(gè)動(dòng)畫(huà)蹲缠,這個(gè)動(dòng)畫(huà)的名稱是ratate,應(yīng)用這個(gè)動(dòng)畫(huà)的元素會(huì)沿著某個(gè) Z 軸(也就是上面規(guī)定好的哪個(gè)交叉點(diǎn))旋轉(zhuǎn) 360 度。

定時(shí)功能

規(guī)定每個(gè)指針旋轉(zhuǎn) 360 度需要多長(zhǎng)時(shí)間悠垛。

更像真實(shí)的 Clock

現(xiàn)實(shí)中的 Clock 大部分是秒針和分針都是會(huì)跳動(dòng)的线定,并且伴隨著滴答聲,我們來(lái)嘗試一下鼎文。

1渔肩、只需要將 分針 和 秒針的旋轉(zhuǎn)方式調(diào)整為steps()即可。

但是這樣的 Clock 每次刷新都是從 0 開(kāi)始的拇惋,并不是我們需要的周偎,怎么做一個(gè)顯示真實(shí)時(shí)間的呢抹剩??

正確的時(shí)間

我們首先要獲取到當(dāng)前的時(shí)間蓉坎,然后計(jì)算每個(gè)指針應(yīng)該旋轉(zhuǎn)的角度即可澳眷。

獲取每個(gè)指針

計(jì)算每個(gè)指針應(yīng)旋轉(zhuǎn)的角度

在 CSS3 中角度單位一共有四種:

deg(度,一個(gè)圓 360 度)蛉艾、

grad(梯度钳踊,一個(gè)圓共400梯度)、

turn(轉(zhuǎn)勿侯、圈拓瞪,一個(gè)圓共1圈)、

rad(弧度助琐,一個(gè)圓共2π弧度)

它們的對(duì)應(yīng)關(guān)系為:

90deg = 100grad = 0.25turn ≈ 1.570796326794897rad

很顯然祭埂,我們這里要用到的單位是deg

1、+90是因?yàn)榻嵌鹊钠鹗嘉恢脼樗降?X 軸兵钮,為了和 Clock 指針起始位置(Y 軸)做統(tǒng)一蛆橡;

2、秒針的計(jì)算最簡(jiǎn)單掘譬,(second / 60) * 360 + 90;

3泰演、分針要考慮秒針的影響,如過(guò)了30秒葱轩,相當(dāng)于半分鐘睦焕。公式為:當(dāng)前分鐘數(shù) + 秒數(shù)在分鐘的映射

;即:(( minutes/ 60) * 360) + ((seconds / 60) * 6) + 90;

4酿箭、時(shí)針稍微復(fù)雜一點(diǎn)复亏,因?yàn)橐紤]分鐘的影響,如過(guò)了30分鐘缭嫡,相當(dāng)于半小時(shí)缔御。公式為:當(dāng)前時(shí)數(shù) + 分鐘在小時(shí)的映射。即:(( hours/ 12) * 360) + ((minutes / 60) * 30) + 90;

為了使頁(yè)面能實(shí)時(shí)的更新妇蛀,我們要把上面的這些東西封裝為一個(gè)函數(shù)耕突,然后用定時(shí)器每秒執(zhí)行一次。

整個(gè)時(shí)鐘的功能都完成了评架!

這個(gè)面試案例就算做完了眷茁,想要完整代碼自己練習(xí)的小伙伴進(jìn)我的群自助領(lǐng)取,已經(jīng)上傳到群文件里了纵诞,群號(hào):621071874上祈,歡迎學(xué)習(xí)交流的小伙伴過(guò)來(lái)一起學(xué)習(xí)交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市登刺,隨后出現(xiàn)的幾起案子籽腕,更是在濱河造成了極大的恐慌,老刑警劉巖纸俭,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皇耗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡揍很,警方通過(guò)查閱死者的電腦和手機(jī)郎楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窒悔,“玉大人呜袁,你說(shuō)我怎么就攤上這事〖蛑椋” “怎么了傅寡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)北救。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芜抒,這世上最難降的妖魔是什么珍策? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮宅倒,結(jié)果婚禮上攘宙,老公的妹妹穿的比我還像新娘。我一直安慰自己拐迁,他們只是感情好蹭劈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著线召,像睡著了一般铺韧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缓淹,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天哈打,我揣著相機(jī)與錄音,去河邊找鬼讯壶。 笑死料仗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伏蚊。 我是一名探鬼主播立轧,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了氛改?” 一聲冷哼從身側(cè)響起帐萎,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎平窘,沒(méi)想到半個(gè)月后吓肋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瑰艘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年是鬼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紫新。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡均蜜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芒率,到底是詐尸還是另有隱情囤耳,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布偶芍,位于F島的核電站充择,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏匪蟀。R本人自食惡果不足惜椎麦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望材彪。 院中可真熱鬧观挎,春花似錦、人聲如沸段化。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)显熏。三九已至雄嚣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佃延,已是汗流浹背现诀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留履肃,地道東北人仔沿。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尺棋,于是被迫代替她去往敵國(guó)和親封锉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绵跷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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