大廠h5開源視頻系列css
是一個專題,在這個專題中咱們會解析一些酷酷的線上h5,在每個細節,每個細膩的過渡背後都能看到前端工程師付出的心血,本篇帶來的是 👉👉 網易雲音樂年度總結html
歡迎關注以往的文章:前端
線上連接請戳 👉👉 網易雲音樂年度總結
他並無多震撼多酷炫, 那些花裏胡哨的都沒有,能形容的只有兩個詞:用心 細膩。網易雲真的很用心,只要在 app 內部搜索【年度總結】你依然能看到本身的年度總結,在看到那首深夜還在聽的歌,聽過最多的歌詞等瞬間,你是否回想起那個你愛過的女孩,是否能激起內心的漣漪。git
分解:github
這個應該比較簡單,咱們上篇文章也講解過:
只須要前端工程師
opacity: 0
過渡到 opacity: 1;
transform: translateY(6px);
過渡到 transform: translateY(0px);
transition-delay: 0.2s; transition-delay: 0.3s; transition-delay: 0.4s;
這裏比較費心:app
能夠看到除了音符外,這我的分爲 頭 身體 大腿 小腿 還有可愛的 jiojiosvg
每個部位都是定位定好的,能夠看出原做者真的耗費不少心血。佈局
<div class="id7_yinfu11"> <div class="id6_tou"> <div class="P1hair"></div> </div> <div class="id13_shenti"></div> <div class="id11_2xiaotui"> <div class="id12_2jiojiopng"></div> </div> <div class="id8_1datui"> <div class="id9_1xiaotui"> <div class="id10_1jiojiopng"></div> </div> </div> <div class="id15_yinfu12"></div> </div>
音符擺動,左右搖擺便可。post
animation: yinfu11 5s cubic-bezier(.445,.05,.55,.95) infinite; @keyframes yinfu { 0% { transform: rotate(-2deg); } 51.67% { transform: rotate(2deg); } 100% { transform: rotate(-2deg); } }
小腿往前踢,rotate 負數便可。
@keyframes xiaotui { 0% { transform: rotate(0deg); } 51.67% { transform: rotate(-32deg); } 100% { transform: rotate(0deg); } }
【永遠】 兩個詞的出場實在太秀了,但其實實現還比較簡單。
分解一下就是:
左右旋轉就不過多介紹,
漸漸放大和背景模糊,背景模糊這裏用到了 filter:blur()
,整個動畫以下:
@keyframes blurAppear { 0% { filter: blur(10px); transform: scale(.8); opacity: 0; } 100% { filter: blur(0); transform: scale(1); opacity: 1; } }
分析一下最靚的一個部分固然是:
整個鞦韆以下。
左右擺動,設置 rotate
便可,須要注意的是:
@keyframes ani4_qiuqian { 0% { transform: rotateZ(0deg); } 50% { transform: rotateZ(31.99359208deg); } 100% { transform: rotateZ(0deg); } }
須要注意的是 這裏角度較小,爲了擺動的幅度大一點,能夠設置transform-origin: -16.10878661% -29.76878613%;
鞦韆完成以後,鞦韆上只有人的枝幹,須要把腿,頭,脖子等一一安放好。
以後就是擺腿,搖頭的動畫,咱們上文已經說起,這裏不過多介紹。
分析:
這裏做者作了分解,把不須要動的做爲軀幹固定好,好比人的軀幹,貓的軀幹。
以後把須要動的,好比貓尾巴,貓爪, 人手... 做爲另一個部分裝上去。
這一屏,咱們分解一下右上角的捲紙動畫。
能夠看到這實際上是一個雪碧圖,
@keyframes juanAnimation { 0% { background-position: 0 0 } 3.70% { background-position: -483px 0 } 7.41% { background-position: -966px 0 } 11.11% { background-position: -1449px 0 } ... 略過其中的幾幀 100.00% { background-position: -1449px -954px } }
定好的動畫,咱們上下捲紙的時候只須要讓其中的一個動畫反向播放便可。
animation: juanAnimation .5s steps(1) reverse, juanAnimation 1s steps(1) 1s forwards;
在這個案列中其中不少動畫並不難,但倒是很是耗費工做量的,不少部位的拆分定位,並且越是細膩的動畫須要的代碼量也就越多。
你可在 github上獲取源碼
你能夠跟着 開源視屏 一步步實現。
下篇咱們依舊帶來 h5 的分享,內容依舊精彩。最後, 感謝網易雲音樂前端團隊的創意做品,給予咱們的靈感和一塊兒學習的機會!