用HTML和CSS實現WWDC 2015上的動畫效果

jopen 9年前發布 | 15K 次閱讀 CSS 前端技術

原文:https://cssanimation.rocks/wwdc15/

譯者:周曉楷(@Helkyle
來源:w3cplus


每年,蘋果都會召開一次重大的會議。WWDC(蘋果開發者大會)是iOS開發者和OSX開發者學習蘋果先進高科技和移動設備與桌面軟件新概念的好機會。

每一年的這個時候,他們都會制造出很多新創意,今年,我被一個用簡單圓圈和形狀制作出來的圖標所驚艷,于是我決定用HTML和CSS來實現它。

WWDC 15邀請卡


蘋果的圖標通常都會使用顏色和形狀的疊加,比如iOS 7 Photos圖標。今年WWDC邀請函用了下面這貨。

用HTML和CSS實現WWDC 2015上的動畫效果

它由一些列層疊和半透明的形狀構成,非常適合用HTML和CSS來實現。

HTML


設計這樣一塊負責的東西需要稍微分析一下。首先,我把它分解成各個部分。 大方向看它是由三種形狀構成的,主要圖形為8個大圓,我先把它們列出來:
用HTML和CSS實現WWDC 2015上的動畫效果

這里我分割成幾個類,這樣做方便后面把large,circle,等類提取出來單獨寫,代碼會整潔很多。

然后我們有八個小形狀,處于大圓的上邊,這些形狀由4個圓形和4個方形構成,方形是由圓角的,我這樣寫HTML

用HTML和CSS實現WWDC 2015上的動畫效果

我用了circle,squircle以及數字1到8來為各個div設置類名,這樣做的好處是,后面為它們設置形狀和顏色的時候很方便。

最后我們把兩個大方形反倒logo中間。

用HTML和CSS實現WWDC 2015上的動畫效果

同樣,我用了large和squircle。

Logo和內容


接下來我們給中間的方形增添點內容。

用HTML和CSS實現WWDC 2015上的動畫效果

這里我們用了一個SVG圖片,還有邀請函的內容。邀請函的字體為San Francisco 但是字體不是OSX標準的,所以這里我換成Helvetica Neue Light。

寫圓和方塊樣式


我要做的第一件事是把circle和squircle的樣式寫好。

用HTML和CSS實現WWDC 2015上的動畫效果

大部分形狀是大得,所以這我把默認值設大了。每個元素的定位都是absolute并且有一個白的邊框。邊框可能不會跟邀請函的一模一樣,但是可以給形狀多點光澤。

接下來我們給大圓加上樣式,設置border-radius為50%,并且使用left,top值設置位置。

用HTML和CSS實現WWDC 2015上的動畫效果

這個時候所有的圓都是在同一個位置上邊。我們使用點小技巧,通過transform-origin的值來改變位置。默認的transform-origin值為(50%,50%),這里我們把值設為圓的底部,然后我們稍微旋轉一下,形狀就出來了。

用HTML和CSS實現WWDC 2015上的動畫效果

讓我們給每個圓添加CSS樣式,仔細研究邀請函的圖片,我們可以看到一個圓的位置在左下角。知道了這一點,我們就可以寫出其他與圓圈的旋轉角度。

用HTML和CSS實現WWDC 2015上的動畫效果

每個塊都有一個顏色,并且旋轉一定角度。下面的動畫動態展示了生成過程。

用HTML和CSS實現WWDC 2015上的動畫效果

有了上面這些原型,我們給其他形狀寫樣式。首先方形也可以看成有不同圓角的圓。

用HTML和CSS實現WWDC 2015上的動畫效果

當我們定位了圓以后,我們給了特定的旋轉角度和顏色。高興的是,相同的形狀也可以使用相同的樣式,我們寫好小形狀的樣式。

用HTML和CSS實現WWDC 2015上的動畫效果

我們把這些形狀設得小一些,并且離中心更遠的距離。并且使用跟上面相同的詭計。

小方塊


小的方形角度錯了,我們需要給它旋轉45deg。


用HTML和CSS實現WWDC 2015上的動畫效果

這里有兩種方法可供選擇,我們可以給每個方形加多一個額外的元素,并旋轉,或者我們選擇CSS中的偽類。兩種方法都行,不過我更傾向于后者。

首先我們把背景顏色,邊框,盒子陰影去掉。

用HTML和CSS實現WWDC 2015上的動畫效果用HTML和CSS實現WWDC 2015上的動畫效果

我們使用::after偽類來創建一個相同的方形,并旋轉45deg。

用HTML和CSS實現WWDC 2015上的動畫效果

現在我們有了大圓和其他小形狀了。

用HTML和CSS實現WWDC 2015上的動畫效果

內容方塊


兩個大的方形包含所有內容,我們把他們定位到中間,并且給他們一個比較深的透明色。

用HTML和CSS實現WWDC 2015上的動畫效果

我們可以旋轉一下第一個大方形。

用HTML和CSS實現WWDC 2015上的動畫效果

用HTML和CSS實現WWDC 2015上的動畫效果

添加動畫


最初的邀請函是靜態的,但是我們的網站叫做CSS Animation Rocks可不是浪得虛名。

我像把每個集合分開,為了做到這一點,我用span元素把它們分別包裹起來,后面就把動畫應用到span元素上即可。

用HTML和CSS實現WWDC 2015上的動畫效果

我們先給span元素定位,防止他們溢出。
用HTML和CSS實現WWDC 2015上的動畫效果

每個span元素都定位到中點。

接下來我們把動畫應用到每個span元素上面。

用HTML和CSS實現WWDC 2015上的動畫效果

我們使用了相同的keyframes但是改變了動畫時間,分別為10s,20s,30s。于是他們一分鐘后回到原來的位置

keyframes 如下所示

用HTML和CSS實現WWDC 2015上的動畫效果

開始位置旋轉角度為0,最終旋轉角度360deg。


用HTML和CSS實現WWDC 2015上的動畫效果

重用CSS


這是個有趣的實驗,但是我覺得最大的收獲是重用了CSS.旋轉和小形狀使用相同的CSS很方便。還有所有的animation用了同一個keyframes。這樣有助于壓縮CSS文件的大小,保證加載速度。

前綴


創建這個例子的時候,我用了autoprefixer,這樣就不用每次寫動畫都要考慮瀏覽器內核了。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!