摘要:在制作幀動(dòng)畫的時(shí)候,一般采用雪碧圖的方式,通過(guò)切換圖片的位置,使其連續(xù)播放,從而形成動(dòng)畫。使用改造之后的代碼,利用偽類進(jìn)行背景填充,然后控制該元素移動(dòng)來(lái)實(shí)現(xiàn)逐幀動(dòng)畫。
在制作幀動(dòng)畫的時(shí)候,一般采用雪碧圖的方式,通過(guò)切換圖片的位置,使其連續(xù)播放,從而形成動(dòng)畫。
雪碧圖雪碧圖的制作可以使用compass制作,還可以使用一些小工具進(jìn)行制作,提供一個(gè)在線制作雪碧圖的網(wǎng)站。
CSS Sprites Generator
我們可以使用css3的keyframes的方式進(jìn)行逐幀動(dòng)畫
.sprite{ height:78px; width:28px; background:url(images/people.png) no-repeat; background-size:112px 78px; animation:people .5s steps(1, start) infinite; } @keyframes people{ 0%{background-position: 0 0 } 25%{ background-position:-28px 0;} 75%{ background-position: -56px 0 } 100%{ background-position:-84px 0;} }
如果animation沒(méi)有設(shè)置steps(1,start/end),動(dòng)畫幀之間將采用默認(rèn)的過(guò)渡方式,此時(shí)觀察到的動(dòng)畫會(huì)變成滑動(dòng)的方式,這不是我們想要的效果。
為此,我們需要使用steps函數(shù)。
steps(number_of_steps, direction)
steps timing function接受兩個(gè)參數(shù),steps(n,start/end),其中n為正整數(shù),表示分為幾步執(zhí)行完,后一個(gè)參數(shù)是可選的,默認(rèn)為end。
start表示的是一個(gè)左連續(xù)函數(shù),在每個(gè)間隔的起點(diǎn)就發(fā)生階躍變化,直到該間隔時(shí)間結(jié)束
end表示的是一個(gè)右連續(xù)函數(shù),在每個(gè)間隔的終點(diǎn)才發(fā)生階躍變化
關(guān)于steps()更多的資料可以查看 How to Use steps() in CSS Animations
對(duì)于人物走動(dòng)的動(dòng)畫,由于是一個(gè)不斷循環(huán)的過(guò)程,所以設(shè)置為start或者end都是可行的。
background-position會(huì)引起重繪,而translate3d不會(huì)。(對(duì)于會(huì)引起回流和重繪的屬性可以查看這個(gè)網(wǎng)站 csstriggers,關(guān)于這個(gè)網(wǎng)站的介紹可以查看 這個(gè)回答)
同時(shí)translate3d會(huì)開(kāi)啟GPU渲染加速,性能更好。
綜上所述,translate3d方式較為優(yōu)越。
使用translate3d改造之后的代碼,利用after偽類進(jìn)行背景填充,然后控制該元素移動(dòng)來(lái)實(shí)現(xiàn)逐幀動(dòng)畫。
.sprite{ overflow:hidden;//設(shè)置超出隱藏 height:78px; width:28px; } .sprite:after{ content:""; //加上content,內(nèi)容才會(huì)顯示 display:block; width:112px ; height:78px; background:url(images/people.png) no-repeat; background-size:112px 78px; animation:people .5s steps(1, start) infinite; } @keyframes people{ 0%{transform: translate3d(0,0,0)} 25%{transform: translate3d(-28px,0,0)} 75%{transform: translate3d(-56px,0,0)} 100%{transform: translate3d(-84px,0,0)} }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/116786.html
摘要:什么是逐幀動(dòng)畫要了解逐幀動(dòng)畫,首先要明確什么是逐幀動(dòng)畫。簡(jiǎn)而言之,實(shí)現(xiàn)逐幀動(dòng)畫需要兩個(gè)條件相關(guān)聯(lián)的不同圖像,即動(dòng)畫幀連續(xù)播放。因此在觸屏頁(yè)面中逐幀動(dòng)畫使用廣泛,下文將對(duì)其進(jìn)行詳細(xì)介紹。因此,逐幀動(dòng)畫也被稱為精靈動(dòng)畫。 什么是逐幀動(dòng)畫要了解 CSS3 逐幀動(dòng)畫,首先要明確什么是逐幀動(dòng)畫。 看一下維基百科中的定義: 定格動(dòng)畫,又名逐幀動(dòng)畫,是一種動(dòng)畫技術(shù),其原理即將每幀不同的圖像連續(xù)播放,...
摘要:中制作動(dòng)畫的幾個(gè)屬性中的變形過(guò)渡動(dòng)畫。默認(rèn)值為,為時(shí),表示變化是瞬時(shí)的,看不到過(guò)渡效果。實(shí)現(xiàn)動(dòng)畫效果主要由兩部分組成通過(guò)類似動(dòng)畫中的幀來(lái)聲明一個(gè)動(dòng)畫在屬性中調(diào)用關(guān)鍵幀聲明的動(dòng)畫。 css3中制作動(dòng)畫的幾個(gè)屬性:css3中的變形(transform)、過(guò)渡(transition)、動(dòng)畫(animation)。 一、 CSS3變形(transform) 語(yǔ)法: transform : no...
摘要:默認(rèn),只執(zhí)行一次動(dòng)畫動(dòng)畫名稱,該名稱為動(dòng)畫關(guān)鍵幀的名稱。默認(rèn)如何理解表示的是關(guān)鍵幀的名稱,那么如何定義關(guān)鍵幀呢使用。語(yǔ)法名稱關(guān)鍵幀樣式或總結(jié)其實(shí)也并不復(fù)雜,其有個(gè)子屬性。下一篇?jiǎng)赢嬋创a解析通過(guò)閱讀動(dòng)畫庫(kù)的源碼,來(lái)提高對(duì)中屬性的認(rèn)識(shí) 前言 上一篇中,總結(jié)了一下 transition 以及 cubic-bezier()。本篇中,將介紹 css3 動(dòng)畫中的更為靈活的動(dòng)畫屬性:animati...
摘要:入門動(dòng)畫為了讓頁(yè)面體驗(yàn)更為流暢,我們?cè)诟嗟臅r(shí)候都會(huì)采用一些動(dòng)畫給頁(yè)面流程增加一些耦合性動(dòng)畫分為兩類過(guò)渡動(dòng)畫從一個(gè)狀態(tài)變?yōu)榱硪粋€(gè)狀態(tài)一個(gè)寬高都為,鼠標(biāo)移上后變?yōu)閷捀吒鬟@時(shí)候我們就可以用到過(guò)渡動(dòng)畫關(guān)鍵幀動(dòng)畫一個(gè)動(dòng)畫定義多個(gè)關(guān)鍵幀,實(shí)現(xiàn)更為復(fù)雜 入門css3動(dòng)畫 為了讓頁(yè)面體驗(yàn)更為流暢,我們?cè)诟嗟臅r(shí)候都會(huì)采用一些動(dòng)畫給頁(yè)面流程增加一些耦合性 css3動(dòng)畫分為兩類 1. 過(guò)渡動(dòng)畫trans...
閱讀 2064·2021-09-07 10:14
閱讀 1494·2019-08-30 15:53
閱讀 2282·2019-08-30 12:43
閱讀 2874·2019-08-29 16:37
閱讀 768·2019-08-26 13:29
閱讀 2016·2019-08-26 13:28
閱讀 451·2019-08-23 18:33
閱讀 3539·2019-08-23 16:09