Windows10開機動畫的純CSS3實現

Windows10開機動畫的純CSS3實現

關於這精緻動畫網上已有些相關實現方案,唯獨沒有HTML5實現,筆者在此給出純CSS3實現的版本,化繁為簡。以最簡潔優雅的方式實現最接近原生的效果,並在此基礎上融入增強色彩漸變。

為了接近自然,測試過很多參數,最終只達到瞭如下視頻的效果。

動畫效果展示https://www.zhihu.com/video/1036029607085973504

原生動畫剖析:

原生動畫效果更流暢自然

仔細觀察之下會發現:

圓點結束的位置就是該圓點開始的位置,圓點出發位置並不是都在底部,而是第一個在底部,後面的緊接著前面一個,像球在環形管道裡運動一樣。

要分析動畫,就要分析其速度變化與運行時間。

先從第一個圓點開始分析。

底部起始點為0°,順時針為正,分析每個區間段的速度與時間:

  • 0° ~ 160°:速度變慢,時間0.5s
  • 160° ~ 180°:勻速,時間2s
  • 180° ~ 360°:速度變快,時間1s
  • 360° ~ 520°:速度變慢,時間0.5s
  • 520° ~ 540°:勻速,時間2s
  • 540° ~ 720°:速度變快,時間1s。

第二個以後的圓點,要使用延時執行,首先隱藏在起始點,速度為0,然後延時時間(偏移時間offsetMs)到達後就顯示,開始運動了。

最後第一個圓點等待最後一個圓點到達底部的功能也是一樣:到達後隱藏在終點,速度不變且為0,一直等待最後一個圓點到達終點。

這樣,才算一個完整的運動軌跡(這裡範圍為實際運行時間):

優化後的時間校正圖,五個圓點的時間百分比軌跡

以上數據來自

以下給出HTML5及CSS3動畫核心代碼:

使用span繪製五個圓點
根據上面得出的8個時間段所設置的環繞動畫
車廂延時設置
圓點顏色隨時間漸變
設置span偽元素

最後,感興趣的同學可以根據我給的參考思路自己實現一下。

參考擴展:

What do you think?

Written by marketer

JS趣味算法學習- 實現二叉排序樹

The Suspense is Killing Redux