Сохранение конечного состояния в конце анимации CSS3

я запускаю анимацию на некоторых элементах, которые установлены в opacity: 0; в CSS. Класс анимации применяется onClick, и, используя ключевые кадры, он изменяет непрозрачность с 0 to 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; }
}

3 ответов


попробуйте добавить animation-fill-mode: forwards;. Например, вот так:

animation: bubble 1.0s forwards;
-webkit-animation: bubble 1.0s forwards; /* for less modern browsers */

Если вы используете больше атрибутов анимации, стенография:

animation: bubble 2s linear 0.5s 1 normal forwards;

для продолжительности 2s, линейная приурочивать-функция, задержка 0.5 s, 1 итерация-отсчет, нормальное направление, переднее заполнени-mode


ЕСЛИ НЕ ИСПОЛЬЗОВАТЬ КОРОТКУЮ ВЕРСИЮ РУКИ: убедитесь, что animation-fill-mode: forwards и после объявление анимации или оно не будет работать...

animation-fill-mode: forwards;
animation: appear 0.5s;
animation-delay: 1s;

vs

animation: appear 0.5s;
animation-fill-mode: forwards;
animation-delay: 1s;