steps
配合animation來使用的(跳轉動畫)如果添加了這個stpe就添加不了cubic-bezier
我們先來看一下沒設置steps前的animation是什么樣子的,我們看到現在過渡動畫是很流暢的,也是漸漸過渡到下一個顏色的
我們再來看一下設置了steps的樣子。
括號里面的值是可以變動的,現在我們填入1,他是在0%這段動畫里面,以跳轉的形式一步過渡完一個顏色,填入2就是分成兩步過渡完
我們試試填入2,它是一次分成兩步過渡的,可以看到會出現過渡的顏色有點不同。
填的數越大,拆分的動畫也就越細膩,我們來看看填入10,但是不管填多少,它都是跳轉動畫
還有后面的end是什么意思呢?后面其實是可以填兩個值的
end還有發start
細心的同學可能會發現,當我們使用(1,end)的時候會發現看不到最后的黃色
那我們就換成start來看看什么樣,是可以看到最后的黃色的。但是換成start,開始就看不到0%的紅色,直接顯示25%的綠色
end和start的區別,總結兩句話
end:保留當前幀狀態,直到這段動畫時間結束
可以添加在后面添加forwards(保留時的100%狀態),就可以看到了
里面的start寫錯了,是end的
start:保留下一幀狀態,直到這段動畫時間結束
我們來做個對比看看
end:保留當前幀狀態,直到這段動畫時間結束
(保留當前幀,我們可以看到第一幀在,最后一幀不在)
start:保留下一幀狀態,直到這段動畫時間結束
(保留下一幀,我們可以看到第一幀不在,最后一幀在)
給end添加foewards(保留最后一幀狀態)
打字效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{ margin:0; padding:0; } @keyframes run { 0%{ left: 74px; } 10%{ left: 90px; } 20%{ left: 107px; } 30%{ left: 123px; } 40%{ left: 141px; } 50%{ left: 158px; } 60%{ left:175px; } 70%{ left:192px; } 80%{ left:209px; } 90%{ left:226px; } 100%{ left:74px; } } .wrapper{ width:300px; height: 50px; } .wrapper .text{ text-align: center; line-height: 50px; letter-spacing: 1px; } .wrapper .baffle{ width:155px; height:20px; background-color:white; position: absolute; top: 17px; animation: run 10s steps(1, end) infinite; } .baffle::after{ content: ""; width: 2px; height: 20px; background-color: #000; position: absolute; left: 0px; top: -1px; } </style> </head> <body> <div class="wrapper"> <div class="text">屏幕前的你真的很帥</div> <div class="baffle"></div> </div> </body> </html>
鍾表效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{ margin:0; padding:0; } @keyframes second{ 0%{ transform: rotate(180deg); } 100%{ transform: rotate(540deg); } } @keyframes minute{ 0%{ transform: rotate(90deg); } 100%{ transform: rotate(450deg); } } .wrapper{ margin:100px auto; width:512px; height: 512px; background-image:url('../ing/clock.png'); position: relative; } .wrapper .hour{ position: absolute; top: 240px; left: 238px; transform: rotate(180deg); transform-origin: center 16px; } .wrapper .minute{ position:absolute; top: 240px; left: 239px; transform: rotate(90deg); transform-origin: center 16px; animation: minute 3600s steps(60, end) infinite; } .wrapper .second{ position:absolute; top: 180px; left: 248px; transform: rotate(180deg); transform-origin: center 76px; animation: second 60s steps(60, end) infinite; } </style> </head> <body> <div class="wrapper"> <img class="hour" src="../ing/hour.png" alt=""> <img class="minute" src="../ing/minute.png" alt=""> <img class="second" src="../ing/second.png" alt=""> </div> </body> </html>
跑馬效果: