CSS Sprites在國內(nèi)很多人叫CSS精靈,其實(shí)這個(gè)技術(shù)不新鮮,原理就是:靠不斷的切換圖片讓人感覺視覺上不斷在變化,例如gif動(dòng)畫之類的效果
那么前端如何實(shí)現(xiàn)精靈效果?
傳統(tǒng)的就是靠定時(shí)器不斷去改變一個(gè)元素的background-image屬性了,簡(jiǎn)單的來說就是靠不斷的替換圖片,但是值得注意的問題就是圖片如果很多,加載會(huì)比較慢,會(huì)占用大量網(wǎng)絡(luò)資源
大多數(shù)的做法就是把圖片都合成一張大圖再利用CSS的以下屬性
background-image background-repeat background-position
組合進(jìn)行背景定位,background-position可以用數(shù)字精確的定位出背景圖片的位置
這里我將采用最新的CSS3的動(dòng)畫實(shí)現(xiàn)。通過 CSS3我們能夠創(chuàng)建動(dòng)畫,這可以在許多網(wǎng)頁中取代動(dòng)畫圖片、Flash 動(dòng)畫以及 JavaScript。
新增一個(gè)class類slowWalk,在這個(gè)類中定義一個(gè)animation,通過關(guān)鍵幀keyframes定義一些規(guī)則,就是如何取圖片坐標(biāo)
右邊代碼區(qū)域所示,為方便理解,解讀一下樣式的slowWalk類定義規(guī)則:
定義一個(gè)名為person-slow的@keyframes規(guī)則,@keyframes用百分比來規(guī)定變化發(fā)生的時(shí)間, 0% 是動(dòng)畫的開始,100% 是動(dòng)畫的完成,規(guī)則中有4個(gè)百分比值的變化,每個(gè)比值分別通過position獲取一張圖片,分別是0%,25%,50%,75%,100%。在950毫米內(nèi)從0%-100%發(fā)生4次變化,采用的算法是steps(1, start)一幀一幀的切換,通過設(shè)置infinite參數(shù)每950毫秒不斷循環(huán)
通過點(diǎn)擊開始動(dòng)畫按鈕,我們可以看到最終效果,完全靠CSS實(shí)現(xiàn),非常nice!!!!
打開index.html文件,在代碼的23行填入相應(yīng)代碼,通過定義個(gè)CCS3的樣式規(guī)則,讓人物開始進(jìn)行幀動(dòng)畫切換
/*規(guī)定 @keyframes 動(dòng)畫的名稱。*/ -webkit-animation-name: person-slow; /*規(guī)定動(dòng)畫完成一個(gè)周期所花費(fèi)的秒或毫秒。默認(rèn)是 0*/ -webkit-animation-duration: 950ms; /*規(guī)定動(dòng)畫被播放的次數(shù)。默認(rèn)是 1。 infinite(循環(huán)播放)*/ -webkit-animation-iteration-count: infinite; /*動(dòng)畫切換的方式是一幀一幀的改變*/ -webkit-animation-timing-function: steps(1, start); -moz-animation-name: person-slow; -moz-animation-duration: 950ms; -moz-animation-iteration-count: infinite; -moz-animation-timing-function: steps(1, start)
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)