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