處理步驟
步驟 1. 建立 HTML
- class clock 是圓時鐘容器
- class clock-face 是時鐘容納時針、分針、秒針的鐘面
- 建立三個 div 各自代表時針、分針、秒針
步驟 2. 調整時針、分針、秒針的 css
- 設定三針旋轉的中心 transform-origin
- 透過 transform 調整三針的位置,
rotate(90deg);
,因為一開始是水平線,所以需要調整到 12 點鐘方向要加上 90 度 - 設定三針走動的晃動特效 transition
步驟 3. 設定時間
- 建立 setDate function
- 透過 setInterval 每秒鐘執行 setDate
學習事項
時鐘的 JS 並無太多的運用,僅需要簡單的角度計算,所以這次學到的大都是 CSS 部分。
CSS 部分
transform-origin
transform 的起始點,一般來說變形的起始點都在物件的中心點,但如果需要像時鐘的分秒針一樣,中心點並不在物件的中心,就需要靠 transform-origin 去設定物件變形的起始點。
基準點是從左上開始,從水平開始往右稱為 x 軸,垂直往下稱為 y 軸, CSS 在編寫習慣上也是先寫 x 軸 再寫 y 軸,如
50px 100px
1 | div |
transform: rotate
變形的旋轉屬性。
1 | .rotated { |
transition
transition 屬性是一個簡寫屬性,用於設置四個過渡屬性
- transition-property 設置過渡效果的 CSS 屬性的名稱
- transition-duration 定義動畫效果所花費的時間
- transition-timing-function 設定動畫效果時所依據的貝茲曲線
- transition-delay 定義多久之後開始發生動畫效果
transition-timing-function
1 | /* Keyword values */ |
延伸部分
- 時分秒針,長度凸顯;
- 添加數字
利用 CSS 調整,簡單使用 width 完成長度。
數字的部分,可以直接在 clock 放上背景圖片來快速處理。
參考資料
- JavaScript 30 day
- 作者 Github Wes Bos
- Js 30 day 中文指南
- 瓜瓜的 JS 30
- 我的 JS 30 練習Github