#html #css #css3 #css_animation #transform
Почему анимация работает не так, как я написал?
Суть анимации:
Красный блок уходит влево на 140px, после он поворачивается на 720 градусов. А в
итоге получается то, что он просто 2 раза уходит влево.
Код:
.d {
display: inline-block;
width: 40px;
height: 40px;
background-color: #F44336;
}
#container {
position: absolute;
top: calc(50% - 20px);
left: calc(50% - 20px);
}
@keyframes transformRed {
0% {
transform: translateX(0) rotate(0deg);
}
70% {
transform: translateX(0) rotate(0deg);
}
80% {
transform: translateX(-140px);
}
85% {
transform: rotate(720deg);
}
100% {
transform: translateX(-140px) rotate(720deg);
}
}
#red {
animation: transformRed 2.5s ease-out 0s 1 normal;
}
Код на jsfiddle: https://jsfiddle.net/deloop_/t6wg275j/1/
Ответы
Ответ 1
Поверь, он работает так, как Вы написали. Идем сначала: Есть функция под названием transformRed Вы задали animation-duration: 2.5s (время исполнения) Значение ease-out для animation-timing-function (плавность исполнения) 0 и 1 - неизвестно И значение normal для animation-direction (направление) Для того, чтобы красный блок запомнил свою последнюю позицию, Вам нужен forwards animation-fill-mode: forwards; Готовый код: .d { display: inline-block; width: 40px; height: 40px; background-color: #F44336; } #container { position: absolute; top: calc(50% - 20px); left: calc(50% - 20px); } @keyframes transformRed { 0% { transform: translateX(0) rotate(0); } 80% { transform: translateX(-140px) rotate(0); } 100% { transform: translateX(-140px) rotate(360deg); // У Вас стояло 720, но я поставил 360 для примера } } #red { animation: transformRed ease-out 3s forwards; // Время можно изменить по желанию }Ответ 2
Попробуйте так: .d { display: inline-block; width: 40px; height: 40px; background-color: #F44336; } #container { position: absolute; top: calc(50% - 20px); left: calc(50% - 20px); } @keyframes transformRed { 0% { transform: translateX(0px); } 25% { transform: translateX(-140px) rotate(0deg); } 50% { transform: translateX(-140px) rotate(720deg); } 100% { transform: translateX(0px); } } #red { animation: transformRed 2.5s ease-out 0s 1 normal; }
Комментариев нет:
Отправить комментарий