日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【原】移动web动画设计的一点心得——css3实现跑步

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【原】移动web动画设计的一点心得——css3实现跑步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今年3月份,由于公司業務需要,我轉崗到微信產品部,離開了TID團隊,人都是有感情的動物,更何況在一個團隊呆了快 3 年,心中十分舍不得,鬼哥說了“天下沒有不散的宴席...”,在我的世界里又多了一次離別的傷感(雖然還在隔壁工作)。加入了微信產品中心后,開始新的團隊生活,工作比以前忙多了,有時周六也要上班,需要更快更高效的完成任務,除了重構頁面,需要主動參與邊緣外的工作,承擔更多。最近比較忙,給自己敲個響鐘:注意身體。

說完題外話,開始近期的主題動畫設計。雖然css3動畫基礎知識學習過,但以前項目使用場景比較少,并沒有太多的實踐,加入新團隊以來,做得幾個項目與動畫有關,嘗試用css3來實現,過程中遇到了不少坑。

大學學過一個月畫畫,但沒有這方面天賦,連簡單卡通動畫也畫不好,于是在國外網站找來如下動畫,利用它來做例子,并把這次用 css3 實現動畫的原理分享給大家~

來自 dribbble 某位大師的作品,GIF圖中一個小女孩抱著一只貓在跑步,非常可愛,動作輕巧,過渡自然。

回到項目需求,要實現類似上圖卡通人物跑步動畫,分析結果如下:

1.跑步動畫可以應用在不同的場景

要求人物的背景是透明的,圖片保證高清,避免邊緣雜邊

2.跑步動畫運動速度與動作成正比關系

人物跑步速度越快,身體動作越快;人物跑步速度為零時,身體動作馬上停止在當前的狀態

3.跑步動畫效果流暢

不會出現卡頓現象

GIF實現跑步

用PS打開該大師的 GIF 圖,在時間軸窗口中有 24 張不同的圖片,通過一幀一幀的播放來實現跑步動畫,很簡單得說明做一個精細的動畫需要多費點心思和勞動力啊,向大師表示敬禮~

?

項目組要求的動畫跟上圖人物大小差不多,一開始跟交互和視覺的同事討論時,嘗試使用 gif 來實現動畫,使用7張圖片輪播,間隔 0.2 秒可滿足的動畫效果,簡單實現如下:

分析下gif動畫

好處:實現簡單、可維護性高、工作成本低

缺點:只適合簡單的動畫效果,不能動態控制動畫

那么項目的硬性要求(控制動畫的暫停、速度等)讓我放棄了對gif實現跑步的想法~

CSS3實現跑步

放棄了 gif,而 swf 也不是我們的選擇,canvas 實現也是可以的,這里不做介紹,本次主題是 css3 動畫~

跑步動畫的實現

方式一:通過切換 7 張圖片來實現

@-webkit-keyframes charector-1{0% {background-image: url(charector_1.png);}14.3% {background-image: url(charector_2.png);}28.6% {background-image: url(charector_3.png);}42.9% {background-image: url(charector_4.png);}57.2% {background-image: url(charector_5.png);}71.5% {background-image: url(charector_6.png);}85.8% {background-image: url(charector_7.png);}100% {background-image: url(charector_1.png);} }

方式二:7 張圖片合成 1 張,通過切換背景圖片位置來實現

@-webkit-keyframes charector-1{0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} }

分析這2種方式

方式一:

實現起來會比較簡單,但帶來額外的 7 個請求數

7 張圖片總大小為:50k

方式二:

需要設計雪碧圖,并量取背景位置,請求數少

雪碧圖大小為:37k

可以看出多張圖片合成的雪碧圖比 7 張圖片還少 13k 外,還可以減少 7 個HTTP請求,那么切換背景位置方式是比較好的,代碼如下:

HTML:

<div class="charector"></div>

CSS:

.charector{ position: absolute; width: 180px; height: 300px; background: url(../img/charector.png) 0 0 no-repeat; -webkit-animation-name: charector-1;/* 動畫名稱 */ -webkit-animation-iteration-count: infinite;/* 動畫無限播放 */ -webkit-animation-timing-function: step-start;/* 馬上跳到動畫每一結束楨的狀態 */ -webkit-animation-duration: 950ms;/* 動畫運行的時間 */ } @-webkit-keyframes charector-1{0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} }

demo,這里下載(請使用 webkit 內核的瀏覽器打開)

加快跑步速度、暫停跑步的實現

加快跑步速度:可以通過快速切換背景圖片位置,animation-duration 可以控制動畫運行的時間,那么減少動畫的時間可以提升跑步的速度,通過在父級動態加載不同的功能 class 來運行不同的動畫,從而改變跑步速度

詳細內容請看代碼,留意注釋

HTML:

<div class="charector-wrap " id="js_wrap"><div class="charector"></div> </div><a class="run-xfast" href="#none">最快</a> <a class="run-fast" href="#none"></a> <a class="run-normal" href="#none">正常</a> <a class="run-slow" href="#none"></a> <button class="btn-paused">暫停</button>

CSS:

.charector{ position: absolute; width: 180px; height:300px; background: url(../img/charector.png) 0 0 no-repeat; -webkit-animation-iteration-count: infinite;/* 動畫無限播放 */ -webkit-animation-timing-function:step-start;/* 馬上跳到動畫每一結束楨的狀態 */ } /* 跑步動畫名稱 */ @-webkit-keyframes person-xfast{/* 超快 */0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} } @-webkit-keyframes person-fast{/**/0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} } @-webkit-keyframes person-normal{/* 正常 */0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} } @-webkit-keyframes person-slow{/**/0% {background-position: 0 0;}14.3% {background-position: -180px 0;}28.6% {background-position: -360px 0;}42.9% {background-position: -540px 0;}57.2% {background-position: -720px 0;}71.5% {background-position: -900px 0;}85.8% {background-position: -1080px 0;}100% {background-position: 0 0;} } /* 跑步動作頻率控制 */ .xfast .charector{/* 超快 */ -webkit-animation-name: person-xfast; -webkit-animation-duration: 500ms; } .fast .charector{/**/ -webkit-animation-name: person-fast; -webkit-animation-duration: 650ms; } .normal .charector{/* 正常 */ -webkit-animation-name: person-normal; -webkit-animation-duration: 800ms; } .slow .charector{/**/ -webkit-animation-name: person-slow; -webkit-animation-duration: 950ms; }

暫停跑步:使用?animation-play-state:paused 可以暫停正在進行的動畫,并停留到當前的動作,那么當用戶停止操作時,給父級加上功能 class 來停止動畫

CSS:

/* 暫停動畫 */ .paused .charector{ -webkit-animation-play-state:paused; }

最后再通過 js 控制不同的跑步速度。

jQuery:

$(document).ready(function(){ $("a").on("click",function(e){$("#js_wrap").find(".charector-wrap").removeClass("paused");$("#js_wrap").attr("class","charector-wrap " + $(e.target).attr("class").split("-")[1])})$(".btn-paused").click(function(){$("#js_wrap").addClass("paused");})})

最后界面:

demo,這里下載(請使用 webkit 內核的瀏覽器打開)

總結:

animation?適合相對簡單的動畫,使用起來比較靈活,如支持切換不同的動畫名、暫定動畫等

animation-timing-function 的 step-start?屬性等不完全支持 android 2.1~4.3 、ios 4.3 系統

?

ok~ 跑步動畫到此結束~

?

轉載于:https://www.cnblogs.com/PeunZhang/p/3685980.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【原】移动web动画设计的一点心得——css3实现跑步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。