Bu durumu çözmek için CSS keyframes içerisinde left ve transform özelliklerini ayrı ayrı animasyonlara bölüp, farklı hızlarda çalışmalarını sağlayabiliriz.
.rabbit {
width: 100px;
height: 100px;
background-image: url('rabbit3.gif');
background-size: cover;
position: absolute;
animation: run 30s linear infinite, flip 1s steps(1) infinite;
top: 60px;
}
@keyframes run {
0%, 100% {
left: 0;
}
50% {
left: 100%;
}
}
@keyframes flip {
0%, 100% {
transform: scaleX(1);
}
49.9999% {
transform: scaleX(1);
}
50% {
transform: scaleX(-1);
}
99.9999% {
transform: scaleX(-1);
}
}
run animasyonu tavşanın sağa ve sola hareketini kontrol ediyor ve 30 saniye boyunca sürekli çalışıyor. flip animasyonu ise tavşanın dönüşünü kontrol ediyor ve sadece 1 saniye sürüyor. Bu sayede dönüş hızlı bir şekilde gerçekleşiyor ama koşu hızı aynı kalıyor.
steps(1) fonksiyonu, animasyonun sadece bir adım içermesini sağlayarak aniden gerçekleşmesini sağlıyor. Bu, dönüşün çok hızlı olmasını sağlar. 49.9999% ve 99.9999% gibi değerler, dönüşün tam olarak %50 ve %100'de gerçekleşmesini sağlamak için kullanılıyor.