原文標題:Responsive CSS Keyframe Animations
原文作者:Joni Trythall
原文地址:
http://designmodo.com/responsive-animation/
譯文作者:@靜逸秋水(蒲歡)
?
==============================
?
我知道對于CSS動畫的的喜好并非自己一人。同時我也認為還有諸多人同我一樣熱衷移動開發。然而,使用帶有動畫網站的愉悅體驗往往卻在移動端戛然止步。如果我們的目標是創造最好的用戶體驗,我們承認,動畫無疑會豐富這方面的體驗,我們需要確保我們交付不管正在使用的設備。
由于移動端受到屏幕尺寸限制,再加上我們當中不少人還有一個很大的拇指,這很有可能遮擋住動畫。這樣一想,似乎會覺得在移動端實現動畫有些讓人沮喪。但我 們依舊不能把所有的注意力花在創建桌面動畫上,而不是僅僅讓移動端用戶駐足觀看。而那樣做,將會犧牲掉很大比例的用戶體驗。
?
通過動畫實現交流
我們也可以通過這些動畫跨越簡單的顏色和大小過渡。它并不必須和最終事件相關。我們可以用有趣的動畫作為與用戶溝通的工具。用戶可以僅此一樂,或者帶有目的性的去觀賞。既然我們已經得到了他們的注意力,現在我們想要做些什么?
?
移動端,動畫第一
就像我們在建設一個網站,我們首先需要開發手機端的動畫。這迫使我們縮小范圍并專注于我們上面所要表達的意思。創建響應的動畫將使我們能夠更好的適應不同 設備的限制,從而構建不同的用戶體驗。即使存在這些差異,但動畫還是不得不表達同樣的事情。每個屏幕都為我們提供了限制(是的,甚至是桌面),響應式設計 將克服這些局限性。
?
按鈕草圖和DEMO
這是關于消息,適應局限以及樂趣。為了證明這個理念,我們將會為一個提交按鈕創建動畫。我們的移動動畫將保持按鈕的邊界內。我們的桌面動畫將超出按鈕的邊界,并利用外面的一些空間。先看下草圖吧!
?
按鈕草圖
我們在這里向用戶傳達了三個階段的消息:激活,提交和完成。通過這些動畫,我們完成了與用戶溝通的整個過程。盡管兩者存在區別,但傳達卻是同一個意思。我們的信息是一致的,我們的圖片風格是一致的,而現在我們應該能夠理解它所帶來的樂趣,無需顧忌屏幕大小。
讓我們來看看我們的按鈕的演示(見文章最后),我們潛水(公頃)進入前的@keyframe。我們的按鈕有一組動畫的適應于屏幕比800px小的,另一組動畫適應于比800px大的屏幕。當你改變瀏覽器窗口大小時將重設,以便展現不同的動畫
?
移動端的@keyframe
我們在傳達一個“提交”或“處理”信息,當按鈕點擊后,通過讓水面出現,然后讓潛艇移動到另一側。同樣文本也會隨著動畫改變。我們會告訴用戶“嘿,感謝點擊,我們在提交您的信息”。
要做到這一切,我們將設立三個不同的@keyframe。
@keyframes submerge { to { transform: translateY(-50px); } } @keyframes drive { to { transform: translateX(140px); } } @keyframes sent { to { opacity: 1; } }?
?
在上面的@keyframe的命令,我們已經把我們的水位上升,潛艇在按鈕中移動,最后,讓我們的“已發送”的文字出現,傳達完成信號。
?
移動限制
當我們賦予這些動畫,我們需要考慮其他因素,或許受限的不是手機屏幕大小,而是我們的大拇指。當用戶用手指點擊按鈕后,那馬上開始動畫,無意動畫可能被錯 過。牢記這一點,我們的動畫任務中定時功能將是重要的。我們聲明延遲和設置完成時間都是為了考慮到拇指的影響如同需要正在處理的動畫一樣。
動畫是微妙的,如果不能如此微妙,或許我們意圖可能已經失去,比如,如果用戶是步行,他很有可能錯過動畫,也就無法激起用戶的關注。我們已經成功地展示給用戶激活,提交,并完成狀態,并且無需使用額外的空間。這樣做會不會很有趣,至少是一個不錯的開始。
?
桌面關鍵幀
現在,到了我們的桌面動畫。這次我們將它做得更炫一點。我們希望潛艇能夠飛出按鈕,并帶有水花,移動到右邊,然后再回到按鈕嗎,再次出現水花。然后潛艇停 留在右邊。與移動端一致,這些動畫都將在4秒內完成。我們按鈕的整體外觀看起來很好玩。讓我們來看看每個@keyframe。
潛艇被定位在左邊,我們希望它上下移動,翻轉,然后下來。它會跳出水面,因此我們將調用此
@keyframe。 @keyframes jump { 25% { transform: translateY(-90px) rotate(-40deg); } 75% { transform: translateY(-90px) translateX(150px) rotate(40deg); } 100% { transform: translateY(0) translateX(150px); } }
?
為了實現賤入效果,我們希望水滴從隱藏到短暫出現,需要如下@keyframe
@keyframes water-splash { 0% { opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; } }
?
在動畫的中途,水滴將完全可見的,但隨后在動畫完成后消失。我們不希望這些家伙一直參與其中,只是做一個簡單的外觀。我們將針對我們的第二飛濺提供一個額外的類,向右移動,然后添加2秒潛艇去那邊的動畫延遲。然后,我們的“已發送”的文字會出現,標示完成的狀態。
?
桌面的限制
我們在這里的主要限制還是在創建移動端的動畫時的消息。我們已經在使用我們的動畫來傳達提交過程中的不同狀態,因此桌面動畫也需如此。主要的區別是在我們 如何使用空間,以及我們如何確定移動的速度。我們讓潛艇舒展了下他的螺旋槳,相信它和用戶的眼球都應該會為此而感謝我們。
?
提交完成
我們已成功地使用兩種不同的方式傳達同樣一件事情。消息和體驗在不同分辨率表現出一致性。這一概念,當然,并不局限于移動一個可愛的潛水艇。我們在我們網 站上創建的每個動畫需要先開發移動。從較小的屏幕省略動畫,或有一個是否適用不同屏幕大小的動畫,都將會影響傳遞的消息,品牌,和用戶的體驗。
我們動畫都是響應式,我們所有的用戶現在極其瘋狂地提交數據來觀看我們的潛艇的舞蹈。只是,你知道,在這種情況下沒有實際的數據。我們還成功地使用CSS動畫作為一種交流形式,而不只是一個華而不實的效果。
是不是覺得這樣的提交很贊?
?
=============
?
DEMO:
http://designmodo.com/demo/cssresponsivebutton/
Download:
https://dl.dropboxusercontent.com/u/21385868/designmodo/cssresponsivebutton.zip
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
