Использование animation-fill-mode в CSS для плавных анимаций
Свойство animation-fill-mode определяет стиль элемента до начала анимации и после её завершения. Оно может быть установлено в одно из четырёх значений: none, forwards, backwards, и both. В этом разделе мы разберем каждый из этих вариантов и покажем на примерах их использование.
| Значение | Описание | Пример |
|---|---|---|
| none | Элемент не сохраняет стиль после завершения анимации. | |
| forwards | Элемент сохраняет конечный стиль, заданный последним ключевым кадром. | |
| backwards | Элемент принимает стиль, определенный в начальном ключевом кадре, до начала анимации. | |
| both | Элемент принимает начальный стиль до начала анимации и сохраняет конечный стиль после её завершения. | |
Рассмотрим конкретный пример: если у нас установлен animation-direction в значение reverse, а также установлена задержка начала анимации, то свойство animation-fill-mode backwards гарантирует, что элемент будет использовать начальный стиль, определенный в ключевых кадрах, даже до того, как анимация начнется. Это важно, чтобы избежать неожиданного изменения стиля элемента, которое может произойти из-за задержки.
Если же у нас используется значение alternate-reverse, что особенно полезно при многократном воспроизведении анимации (animation-iteration-count: multiple), то значение both в animation-fill-mode обеспечит плавное переключение между итерациями, сохраняя стили начального и конечного кадров на протяжении всей анимации.
Теперь, когда у вас есть понимание того, как это свойство применяется, вы можете экспериментировать с различными комбинациями и достигать более сложных и плавных анимационных эффектов. Не забывайте проверять поддержку свойств в различных версиях браузеров, чтобы ваши анимации работали корректно во всех средах.
Основные принципы работы
Анимация позволяет веб-элементам динамически изменяться, привлекая внимание пользователей и улучшая восприятие контента. Один из ключевых аспектов анимации – возможность управлять состоянием элемента до, во время и после воспроизведения анимации. Это обеспечивается рядом свойств, которые позволяют задавать начальные и конечные состояния анимируемого элемента, а также поддерживать эти состояния после завершения анимации.
Для того чтобы полностью понять этот процесс, необходимо ознакомиться с основными свойствами и значениями, которые применяются к анимациям. Эти свойства позволяют контролировать время начала анимации, её продолжительность, количество повторений и многое другое. Рассмотрим их подробнее:
- animation-name: задает имя ключевой кадровой анимации, которая будет применена к элементу.
- animation-duration: определяет продолжительность воспроизведения анимации в секундах.
- animation-iteration-count: указывает количество циклов анимации, включая возможность бесконечного воспроизведения.
- animation-delay: задает задержку перед началом воспроизведения анимации.
- animation-play-state: управляет воспроизведением анимации, позволяя её останавливать и возобновлять.
Следуя этим основным принципам, можно достичь гладкого и предсказуемого поведения анимируемых элементов. Рассмотрим несколько примеров для наглядности:
Примеры использования

- Простая анимация изменения положения элемента:
@keyframes move { from { margin-left: 0; } to { margin-left: 100px; } } .animated-element { animation-name: move; animation-duration: 2s; } - Анимация с задержкой и несколькими повторами:
@keyframes grow { from { transform: scale(1); } to { transform: scale(1.5); } } .animated-element { animation-name: grow; animation-duration: 1s; animation-delay: 0.5s; animation-iteration-count: 3; } - Управление состоянием воспроизведения анимации:
.animated-element { animation-name: move; animation-duration: 2s; animation-play-state: paused; }
Таким образом, используя различные свойства анимаций, можно создать разнообразные эффекты, которые будут поддерживаться всеми основными браузерами. Для удобства работы рекомендуется ознакомиться с таблицами поддерживаемых значений для каждой версии браузера.
Понятие fill-mode в CSS анимациях
При создании анимаций в веб-разработке часто возникает необходимость управлять состоянием элемента до, во время и после завершения анимации. Важно понимать, как задавать стиль анимируемого элемента так, чтобы он выглядел гармонично на всех этапах анимации. В этом контексте рассмотрим ключевую концепцию fill-mode и её значения.
Атрибут animation-fill-mode применяется к анимациям и задает состояние элемента до начала анимации, во время её выполнения и после завершения. Этот атрибут поддерживает несколько значений, таких как none, forwards, backwards и both. Каждое из них определяет, будет ли применен анимированный стиль до или после выполнения анимации.
Значение none указывает, что элемент не будет сохранять стили из ключевых кадров после завершения анимации. Это значит, что анимируемый элемент вернется к своему исходному состоянию.
Если задать значение forwards, то после завершения анимации элемент сохранит стили, определенные в последнем ключевом кадре. Это полезно, когда необходимо, чтобы элемент оставался в конечном состоянии анимации.
Значение backwards задает элементу стили из первого ключевого кадра до начала анимации. Это значит, что элемент примет начальные стили, определенные анимацией, до её старта, что может быть полезно для плавного перехода.
Значение both сочетает в себе эффекты forwards и backwards. Элемент будет сохранять стили как из первого, так и из последнего ключевого кадра. Это может быть полезно для сложных анимаций, когда важно, чтобы элемент выглядел корректно на всех этапах анимации.
Примеры использования данного атрибута могут включать анимации изменения цвета фона, изменения размера элемента, такие как grow, изменения положения с помощью margin-left или изменения границ, например, border-top. Важно учитывать поддержку браузерами и убедиться, что все используемые значения корректно отображаются во всех версиях браузеров.
Рассмотрим пример кода, в котором значение атрибута animation-fill-mode установлено в forwards:
@keyframes example {
from { opacity: 0; }
to { opacity: 1; }
}
.element {
animation-name: example;
animation-duration: 2s;
animation-fill-mode: forwards;
}
В данном примере, элемент с классом element будет постепенно становиться видимым (задает свойство opacity), а после завершения анимации останется видимым, так как значение animation-fill-mode установлено в forwards.
Как правильно выбрать значение для плавных эффектов
- Normal — при данном значении элемент возвращается к исходному состоянию после завершения анимации. Это удобно, если необходимо, чтобы стиль не менялся после того, как анимация остановилась.
- Forwards — значение, при котором элемент сохраняет стиль последнего ключевого кадра. Полезно, если анимация заканчивается и элемент должен оставаться в измененном состоянии.
- Backwards — элемент принимает стиль первого ключевого кадра до начала анимации. Это позволяет предусмотреть стиль до того, как анимация начнется.
- Both — совмещает значения forwards и backwards, сохраняя стили первого и последнего кадра. Отлично подходит для сложных анимаций, где необходимо учитывать оба состояния.
Выбор значения зависит от того, каким должен быть элемент после завершения анимации. Например, для анимации с animation-direction, заданным как alternate-reverse, значение both позволит элементу двигаться в обоих направлениях и сохранять нужные стили в конце.
Рассмотрим примеры:
- При normal элемент вернется к своему исходному состоянию. Например, если элемент двигался из точки А в точку Б, после завершения анимации он вернется в точку А.
- При forwards элемент останется в точке Б после завершения анимации, сохраняя все стили, примененные на последнем кадре.
- При backwards элемент будет выглядеть так, как если бы анимация уже началась, начиная с первого ключевого кадра, даже если она еще не стартовала.
- При both элемент сочетает эффекты forwards и backwards, сохраняя стили как первого, так и последнего кадра анимации.
В следующей таблице кратко описаны эти значения и их влияние на элемент:
| Значение | Описание |
|---|---|
| Normal | Элемент возвращается к начальному состоянию |
| Forwards | Элемент сохраняет стиль последнего ключевого кадра |
| Backwards | Элемент принимает стиль первого ключевого кадра до начала анимации |
| Both | Элемент сохраняет стили как первого, так и последнего ключевого кадра |
Важным аспектом является поддержка данных значений различными браузерами, поэтому необходимо учитывать, в каком из них применяется анимация. Правильный выбор значений позволяет добиться плавных переходов, улучшая восприятие и функциональность анимированных элементов на странице.
Детальное рассмотрение значений fill-mode
none — Значение none означает, что элемент не будет сохранять стили, определенные в ключевых кадрах, после завершения анимации. Это значение применимо, если вам нужно, чтобы элемент вернулся к своим исходным стилям, заданным до начала анимации.
forwards — Когда fill-mode установлен в forwards, элемент сохраняет стили последнего ключевого кадра после завершения анимации. Это особенно полезно, когда анимация должна изменять состояние элемента и это изменение должно оставаться после окончания анимации.
backwards — Значение backwards применимо, когда элемент должен принять стили начального ключевого кадра до того, как анимация начнется. Это значение полезно для создания плавных переходов от начального состояния элемента к первому ключевому кадру анимации.
both — Значение both комбинирует эффекты forwards и backwards. Элемент будет сохранять стили начального ключевого кадра до начала анимации и стили последнего ключевого кадра после её завершения. Это значение обеспечивает наиболее полный контроль над состоянием элемента до и после анимации.
Каждое из этих значений имеет свои уникальные особенности и может применяться в зависимости от того, какой эффект вы хотите достичь с вашей анимацией. Понимание этих значений поможет вам создавать более гибкие и эффективные анимации, которые будут выглядеть профессионально и эстетично.
Значение «none» и его эффект на анимацию

Когда animation-fill-mode установлено в «none», стили, заданные анимацией, не будут применяться к элементу после завершения анимации. Это означает, что элемент вернется к своим исходным стилям, определенным до начала анимации. Если анимация стартует с задержкой, то элемент также не будет отображать промежуточные стили в течение этой задержки.
Рассмотрим пример. Пусть у нас есть элемент с классом box, который должен анимироваться, изменяя border-top и background-color. Мы задаем анимацию grow, которая длится 2 секунды и применяется один раз. Если значение animation-fill-mode установлено в «none», после завершения анимации элемент вернется к своим исходным стилям.
@keyframes grow {
from {
border-top: 1px solid red;
background-color: yellow;
}
to {
border-top: 10px solid blue;
background-color: green;
}
}
.box {
animation-name: grow;
animation-duration: 2s;
animation-fill-mode: none;
}
Таким образом, при использовании значения «none», анимация прекращает своё влияние на элемент по завершении, и все стили возвращаются к исходным значениям. Это значение полезно, когда необходимо, чтобы элемент вернулся в своё первоначальное состояние после выполнения анимации, например, при циклических анимациях или анимациях, которые не должны влиять на последующие состояния элемента.
Следует учитывать, что значение «none» по умолчанию устанавливается во всех анимациях, если не задано иное значение. Важно планировать анимационные эффекты и учитывая это значение, особенно если вы хотите, чтобы анимация влияла на элемент даже после её завершения.
Наконец, значение «none» часто используется в сочетании с другими параметрами анимации, такими как animation-direction, animation-iteration-count и animation-play-state, чтобы создавать более сложные и интересные эффекты. В таблице ниже приведены значения, которые могут быть установлены для параметра animation-fill-mode:
| Значение | Описание |
|---|---|
| none | Элемент не сохраняет стили анимации после её завершения |
| forwards | Элемент сохраняет стили конечного ключевого кадра после завершения анимации |
| backwards | Элемент применяет стили начального ключевого кадра до начала анимации |
| both | Элемент применяет стили как начального, так и конечного ключевого кадра |








