Ответ 1
Попробуйте добавить animation-fill-mode: forwards;
, Например, вот так:
-webkit-animation: bubble 1.0s forwards; /* for less modern browsers */
animation: bubble 1.0s forwards;
Я запускаю анимацию для некоторых элементов, которые установлены в opacity: 0;
в CSS. Класс анимации применяется onClick и, используя ключевые кадры, изменяет непрозрачность от 0
до 1
(между прочим).
К сожалению, когда анимация окончена, элементы возвращаются к opacity: 0
(как в Firefox, так и в Chrome). Мое естественное мышление состояло в том, что анимированные элементы сохраняют конечное состояние, переопределяя их первоначальные свойства. Разве это не так? А если нет, как я могу заставить элемент сделать это?
Код (префиксные версии не включены):
@keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; }
50% { transform:scale(1.2); opacity:0.5; }
100% { transform:scale(1.0); opacity:1.0; }
}
Попробуйте добавить animation-fill-mode: forwards;
, Например, вот так:
-webkit-animation: bubble 1.0s forwards; /* for less modern browsers */
animation: bubble 1.0s forwards;
Если вы используете больше атрибутов анимации, сокращенное обозначение:
animation: bubble 2s linear 0.5s 1 normal forwards;
для продолжительности 2 с, линейная синхронизация, задержка 0,5 с, 1 итерация, нормальное направление, режим прямого заполнения
ЕСЛИ НЕ ИСПОЛЬЗУЕТСЯ ВЕРСИЯ КРАТКОЙ РУЧКИ: Убедитесь, что animation-fill-mode: forwards
- ПОСЛЕ объявления анимации, иначе он не будет работать...
animation-fill-mode: forwards;
animation-name: appear;
animation-duration: 1s;
animation-delay: 1s;
против
animation-name: appear;
animation-duration: 1s;
animation-fill-mode: forwards;
animation-delay: 1s;
использование animation-fill-mode: вперед;
animation-fill-mode: forwards;
Элемент сохранит значения стиля, установленные последним ключевым кадром (зависит от анимации-направления и анимации-итерации-счетчика).
Примечание. Правило @keyframes не поддерживается в Internet Explorer 9 и более ранних версиях.
Рабочий пример
div {
width: 100px;
height: 100px;
background: red;
position :relative;
-webkit-animation: mymove 3ss forwards; /* Safari 4.0 - 8.0 */
animation: bubble 3s forwards;
/* animation-name: bubble;
animation-duration: 3s;
animation-fill-mode: forwards; */
}
/* Safari */
@-webkit-keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; left:0}
50% { transform:scale(1.2); opacity:0.5; left:100px}
100% { transform:scale(1.0); opacity:1.0; left:200px}
}
/* Standard syntax */
@keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; left:0}
50% { transform:scale(1.2); opacity:0.5; left:100px}
100% { transform:scale(1.0); opacity:1.0; left:200px}
}
<h1>The keyframes </h1>
<div></div>