Читайте ниже для моего окончательного редактирования!
Можно ли использовать анимацию CSS3 без анимации анимации между кадрами?
Например, у меня есть изображение, на котором у меня есть два спрайта анимации персонажей. Они расположены на расстоянии 50 пикселей. Когда я использую следующую анимацию, я все равно получаю анимацию (хотя она очень быстрая, поэтому она может выглядеть как мерцание).
#ball .animated{
-webkit-animation-name: animate;
-webkit-animation-duration: .5s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-timing-function: linear;}
@-webkit-keyframes animate{
0%{-webkit-transform: translate3d(0,0,0);}
49%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
Таким образом, исходя из вышеизложенного, спрайт-кадр должен удерживаться в первой части изображения (x = 0px) в течение первых 0-49% продолжительности, а затем переходить ко второй части изображения (x = -50px) на 50-100%. Однако разницы в 1% все же достаточно, чтобы визуально увидеть анимацию от 0 до -50 пикселей.
Мысли
Edit:
-webkit-animation-timing-function: cubic-bezier(1,0,1,0);
Вышеприведенное, казалось, немного исправило его, но через некоторое время оно снова начинает мерцать.
Edit:
Я не понял, что вы можете использовать десятичные числа с процентами. Сокращение разрыва от 1% до 0,1% создает гораздо более быструю анимацию движения, которая почти не видна (с -webkit-animation-duration:
<1 с;) </p>
0%{-webkit-transform: translate3d(0,0,0);}
49.9%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
Окончательное редактирование!:
Итак, из того, что я нашел, проценты анимации веб-набора будут принимать десятичную дробь на миллионное место (т. Е. 0,0001). Что на относительно быстром таймере анимации приведет к мгновенному переводу. Полагаю, немного взломать, но это делает свое дело.
Пример:
@-webkit-keyframes sprite {
0% {
-webkit-transform: translate3d(0,0,0);
}
50% {
-webkit-transform: translate3d(0,0,0);
}
50.0001%{
-webkit-transform: translate3d(-50px,0,0);
}
100%{
-webkit-transform: translate3d(-50px,0,0);
}
}
В приведенном выше примере изображение размером 100px (каждый спрайт на изображении имеет ширину 50px) внутри контейнера div с width: 50px
и overflow:hidden
для отображения только одного спрайта за раз за раз.
Примечание: я использую translate3d, потому что это аппаратное ускорение в мобильных браузерах, где translateX, translateY, translateZ еще не аппаратно ускорены.