前端 - css3動(dòng)畫(huà)怎樣對(duì)幀的理解?
問(wèn)題描述
第一種:
@keyframes slow {0% { background-position: -0px -291px;}25% { background-position: -602px -0px;}50% { background-position: -302px -291px;}75% { background-position: -151px -291px;}100% { background-position: -0px -291px;} } /*動(dòng)畫(huà)切換的方式是一幀一幀的改變*/-webkit-animation-timing-function: steps(1, start);
第二種:
$spriteWidth: 140px; // 精靈寬度 @keyframes run { 0% { background-position: 0 0; } 100% { background-position: -($spriteWidth * 12) 0; // 12幀 }}#sprite { width: $spriteWidth; height: 144px; background: url('../images/sprite.png') 0 0 no-repeat; animation: run 0.6s steps(12) infinite;}
1,什么叫“一幀一幀的改變”, steps(1, start);該如何理解?2,第二種直接“-($spriteWidth * 12) 0”我就看不懂了,為什么這樣寫(xiě)?
問(wèn)題解答
回答1:1. 什么叫“一幀一幀的改變”, steps(1, start);該如何理解?animation-timing-function 中 steps 的用法參見(jiàn)這篇
steps 詳解
2. 第二種直接“-($spriteWidth * 12) 0”我就看不懂了,為什么這樣寫(xiě)?首先顯然這是 Scss 文件(一種 css 預(yù)編譯文件)
定義了一個(gè)變量:$spriteWidth
-($spriteWidth * 12) 這句就是一個(gè)運(yùn)算呀 => -(140px*12)
回答2:1: steps(1, start)我在MDN上剛好看到一個(gè)解釋
This keyword represents the timing function steps(1, start). Using this timing function, the animation jumps immediately to the end state and stay in that position until the end of the animation.
就是說(shuō)你的動(dòng)畫(huà)幀一開(kāi)始就馬上跳到結(jié)束了,所以你看見(jiàn)的是keyframes里面5個(gè)幀一幀一幀地切換。如果沒(méi)有steps(1, start),就會(huì)是一個(gè)平滑移動(dòng)的效果。
2: -($spriteWidth * 12)應(yīng)該是指把你這個(gè)動(dòng)畫(huà)分成12幀,每一幀你的背景右移-($spriteWidth * 12)這個(gè)長(zhǎng)度
相關(guān)文章:
1. python - scrapy 如何組合2個(gè)不同頁(yè)面的數(shù)據(jù),一并存儲(chǔ)2. mysql優(yōu)化 - mysql 一張表如果不能確保字段列長(zhǎng)度一致,是不是就不需要用到char。3. node.js - mysql如何通過(guò)knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)4. javascript - 用jsonp抓取qq音樂(lè)總是說(shuō)回調(diào)函數(shù)沒(méi)有定義5. javascript - 新浪微博網(wǎng)頁(yè)版的字?jǐn)?shù)限制是怎么做的6. sublime可以用其他編譯器替換嗎?7. python2.7 - python 函數(shù)或者類(lèi) 代碼的執(zhí)行順序8. 使用python中的pandas求每個(gè)值占該列的比例9. python - 多態(tài)調(diào)用方法時(shí)卻顯示bound method...10. mysql 怎么做到update只更新一行數(shù)據(jù)?
