一程序員用javascript做了這個時鐘特效麸锉,面試秒過

哈哈钠绍,學(xué)習(xí)javascript的小伙伴,可以跟著我這篇文章的思路一起做一個時鐘特效出來淮椰,咋找工作也秒過五慈。代碼都齊全了。

今天這個時鐘效果圖:

項(xiàng)目分析

1主穗、首先時鐘嘛泻拦,肯定要獲取本地客戶端的時間;

2忽媒、時鐘有 3 個指針争拐,我們可以通過添加動畫的方式讓它們圍繞中心點(diǎn)轉(zhuǎn)動;

3晦雨、通過獲取到的 hour架曹、minute 和 second 值分別計算 時針、分針和秒針的角度值闹瞧;

HTML&CSS

布局

1绑雄、.box是為了布局的方便;

2奥邮、 然后每個指針都需要一個?*-container容器 万牺。

添加 CSS 樣式

把背景加載進(jìn)來罗珍,然后放在頁面中合適的位置上。

1脚粟、?width: 35rem; height: 38rem;這個比例比較順眼吧覆旱;

2、?.box使用 Flex 布局方式核无,并且使其中的?.clock水中扣唱、垂直方向都居中⊥拍希看過第一天教程應(yīng)該都明白 Flex 布局的噪沙。

添加中心軸

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

1曲聂、 這句?content: '';是必須的,不然這個偽元素不會顯示佑惠,即使指定了寬度和高度。

2齐疙、 由于相對定位是從元素的左上角開始計算的膜楷,所以?top: 50%; left: 50%;不能使這個小圓點(diǎn)在 Clock 的中心,使用?transform: translate(-50%,-50%);向左上方移動自身寬度或高度的 50%

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

指針容器

1、容器被放置在 Clock 的上方轿塔,但是并沒有樣式特愿,接下來就可以創(chuàng)建指針了!

添加指針

1勾缭、分別添加時針揍障、分針和秒針。

2俩由、 使用?%這種單位可以更好地適應(yīng)不同的屏幕毒嫡。

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

4兜畸、 這里在定位的時候把自身的寬度計算在內(nèi)了,所以就不必在往左上角移動了碘梢。

動畫

目前為止咬摇,這個 Clock 還是沒有功能的,我們來讓它動起來煞躬。

定義動畫規(guī)則

1肛鹏、這里用?@keyframes?規(guī)則定義了一個動畫逸邦,這個動畫的名稱是?ratate?,應(yīng)用這個動畫的元素會沿著某個 Z 軸(也就是上面規(guī)定好的哪個交叉點(diǎn))旋轉(zhuǎn) 360 度。

定時功能

規(guī)定每個指針旋轉(zhuǎn) 360 度需要多長時間龄坪。

更像真實(shí)的 Clock

現(xiàn)實(shí)中的 Clock 大部分是秒針和分針都是會跳動的昭雌,并且伴隨著滴答聲,我們來嘗試一下健田。

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

但是這樣的 Clock 每次刷新都是從 0 開始的妓局,并不是我們需要的总放,怎么做一個顯示真實(shí)時間的呢?好爬?

正確的時間

我們首先要獲取到當(dāng)前的時間局雄,然后計算每個指針應(yīng)該旋轉(zhuǎn)的角度即可。

獲取每個指針

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

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

deg(度存炮,一個圓 360 度)炬搭、

grad(梯度,一個圓共400梯度)穆桂、

turn?(轉(zhuǎn)宫盔、圈,一個圓共1圈)享完、

rad(弧度灼芭,一個圓共2π弧度)

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

90deg = 100grad = 0.25turn ≈ 1.570796326794897rad

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

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

2茴迁、秒針的計算最簡單寄悯,(second / 60) * 360 + 90;

3、分針要考慮秒針的影響笋熬,如過了30秒热某,相當(dāng)于半分鐘。公式為:?當(dāng)前分鐘數(shù) + 秒數(shù)在分鐘的映射

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

4昔馋、時針稍微復(fù)雜一點(diǎn),因?yàn)橐紤]分鐘的影響糖耸,如過了30分鐘秘遏,相當(dāng)于半小時。公式為:?當(dāng)前時數(shù) + 分鐘在小時的映射嘉竟。即:(( hours/ 12) * 360) + ((minutes / 60) * 30) + 90;

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

整個時鐘的功能都完成了倦蚪!

這個面試案例就算做完了希坚,想要完整代碼自己練習(xí)的小伙伴進(jìn)我的群自助領(lǐng)取,已經(jīng)上傳到群文件里了陵且,群號:594959296裁僧,歡迎學(xué)習(xí)交流的小伙伴過來一起學(xué)習(xí)交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慕购,一起剝皮案震驚了整個濱河市聊疲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沪悲,老刑警劉巖获洲,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異殿如,居然都是意外死亡贡珊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門涉馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來飞崖,“玉大人,你說我怎么就攤上這事谨胞。” “怎么了蒜鸡?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵胯努,是天一觀的道長。 經(jīng)常有香客問我逢防,道長叶沛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任忘朝,我火速辦了婚禮灰署,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘局嘁。我一直安慰自己溉箕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布悦昵。 她就那樣靜靜地躺著肴茄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪但指。 梳的紋絲不亂的頭發(fā)上寡痰,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天抗楔,我揣著相機(jī)與錄音,去河邊找鬼拦坠。 笑死连躏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贞滨。 我是一名探鬼主播入热,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疲迂!你這毒婦竟也來了才顿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤尤蒿,失蹤者是張志新(化名)和其女友劉穎郑气,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腰池,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尾组,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了示弓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讳侨。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奏属,靈堂內(nèi)的尸體忽然破棺而出跨跨,到底是詐尸還是另有隱情,我是刑警寧澤囱皿,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布勇婴,位于F島的核電站,受9級特大地震影響嘱腥,放射性物質(zhì)發(fā)生泄漏耕渴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一齿兔、第九天 我趴在偏房一處隱蔽的房頂上張望橱脸。 院中可真熱鬧,春花似錦分苇、人聲如沸添诉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吻商。三九已至,卻和暖如春糟红,著一層夾襖步出監(jiān)牢的瞬間艾帐,已是汗流浹背乌叶。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柒爸,地道東北人准浴。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像捎稚,于是被迫代替她去往敵國和親乐横。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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

  • 哈哈,學(xué)習(xí)javascript的小伙伴条霜,可以跟著我這篇文章的思路一起做一個時鐘特效出來催什,咋找工作也秒過。代碼都齊全...
    DarkSpy13閱讀 2,181評論 1 7
  • 聲明:原創(chuàng)作品宰睡,轉(zhuǎn)載請注明出處http://www.reibang.com/p/c2abd6226897 在上篇文...
    蛇發(fā)女妖閱讀 4,675評論 6 56
  • 易效能20:養(yǎng)成習(xí)慣靠動機(jī)和細(xì)節(jié)蒲凶! 自律是一種結(jié)果。 在別人看來很難的一件事情拆内,對你而言卻是很簡單的旋圆,因?yàn)槟阋呀?jīng)習(xí)...
    總在成長閱讀 62評論 0 0
  • 生活總是讓我們遍體鱗傷,但到后來麸恍,那些受傷的地方一定會變成我們最強(qiáng)壯的地方灵巧。其實(shí)也未必就是被治愈了,很多時候抹沪,不過...
    勇敢的Sandy閱讀 385評論 0 4
  • 上個星期的文章了采够,閑來無事所寫,只是一個小粉絲的心聲冰垄,不喜勿噴蹬癌。謝謝。 ………… ...
    林顧閱讀 1,012評論 0 0