Я запускаю анимацию для некоторых элементов, которые установлены 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;
. Например, вот так:источник
forwards
значениеanimation-fill-mode
свойства гарантирует, что элемент будет содержать последнее состояние ключевого кадра анимации после ее завершения. например, если ваша анимация изменяетсяwidth
от 0 до 100px, это свойство обеспечивает ширину 100px после окончания анимации.100% / to
точку,@keyframe
иначе она не будет работать.Если вы используете больше атрибутов анимации, сокращение будет:
Это дает:
2s
продолжительностьlinear
временная функция0.5s
задержка1
счетчик итераций (может быть бесконечным)normal
направлениеforwards
Режим заполнения (устанавливается в обратном направлении, если вы хотите, чтобы совместимость использовала конечную позицию в качестве конечного состояния)источник
ЕСЛИ НЕ ИСПОЛЬЗУЯ КОРОТКИЙ HAND VERSION: Убедитесь , что
animation-fill-mode: forwards
это ПОСЛЕ декларации анимации или она не будет работать ...против
источник
Используйте animation-fill-mode: forwards;
Элемент сохранит значения стиля, установленные последним ключевым кадром (зависит от анимации-направления и анимации-итерации-счетчика).
Примечание. Правило @keyframes не поддерживается в Internet Explorer 9 и более ранних версиях.
Рабочий пример
источник