Ответ 1
Вы ищете:
animation-fill-mode: forwards;
Дополнительная информация о MDN и список поддержки браузера на canIuse.
У меня есть анимация с четырьмя частями CSS3, играющая при нажатии - но последняя часть анимации предназначена для снятия с экрана.
Однако он всегда возвращается в исходное состояние после его воспроизведения. Кто-нибудь знает, как я могу остановить его на своем последнем кадре css (100%), или как избавиться от всего div, в котором он находится, как только он сыграл.
@keyframes colorchange {
0% { transform: scale(1.0) rotate(0deg); }
50% { transform: rotate(340deg) translate(-300px,0px) }
100% { transform: scale(0.5) rotate(5deg) translate(1140px,-137px); }
}
Вы ищете:
animation-fill-mode: forwards;
Дополнительная информация о MDN и список поддержки браузера на canIuse.
Разве ваша проблема не в том, что вы устанавливаете имя webkitAnimationName ни к чему, чтобы сбросить CSS для вашего объекта обратно до состояния по умолчанию. Не останется ли он там, где это закончилось, если вы просто удалите функцию setTimeout, которая сбросит состояние?
Лучший способ, похоже, поставить конечное состояние в основной части css. Как и здесь, я устанавливаю ширину в 220px
, так что она, наконец, становится 220px
. Но начиная с 0px;
div.menu-item1 {
font-size: 20px;
border: 2px solid #fff;
width: 220px;
animation: slide 1s;
-webkit-animation: slide 1s; /* Safari and Chrome */
}
@-webkit-keyframes slide { /* Safari and Chrome */
from {width:0px;}
to {width:220px;}
}
Если вы хотите добавить это поведение в сокращенное определение свойства animation
, порядок под-свойств выглядит следующим образом
animation-name
- по умолчанию none
animation-duration
- по умолчанию 0s
animation-timing-function
- по умолчанию ease
animation-delay
- по умолчанию 0s
animation-iteration-count
- по умолчанию 1
animation-direction
- по умолчанию normal
animation-fill-mode
- вам нужно установить это на forwards
animation-play-state
- по умолчанию running
Поэтому в наиболее распространенном случае результатом будет что-то вроде этого
animation: colorchange 1s ease 0s 1 normal forwards;
-webkit-animation-fill-mode: forwards; /* Safari 4.0 - 8.0 */ animation-fill-mode: forwards;
Поддержка браузера
Использование: -
.fadeIn {
animation-name: fadeIn;
-webkit-animation-name: fadeIn;
animation-duration: 1.5s;
-webkit-animation-duration: 1.5s;
animation-timing-function: ease;
-webkit-animation-timing-function: ease;
animation-fill-mode: forwards;
-webkit-animation-fill-mode: forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
Я только что опубликовал аналогичный ответ, и вы, вероятно, хотите посмотреть:
http://www.w3.org/TR/css3-animations/#animation-events-
Вы можете узнать аспекты анимации, такие как запуск и остановка, а затем, как только скажете, что событие "остановить" уволено, вы можете делать все, что хотите, в dom. Я попробовал это некоторое время назад, и это может сработать, но я предполагаю, что пока вы будете ограничены вебкитом (но вы, вероятно, уже приняли это). Кстати, поскольку я написал одну и ту же ссылку для 2 ответов, я бы предложил этот общий совет: посмотрите W3C - они в значительной степени пишут правила и описывают стандарты. Кроме того, страницы разработки webkit довольно важны.
Никто на самом деле не сделал этого так, как это было сделано для работы animation-play-state установлен на паузу.
Я узнал сегодня, что есть предел, который вы хотите использовать для режима заполнения. Это от разработчика Apple. Слух * вокруг * шесть, но не уверен. Кроме того, вы можете установить начальное состояние своего класса на то, как вы хотите, чтобы анимация закончилась, затем * initialize * it at from/0%.