② Ключевые кадры
Продолжим изучение темы CSS3 - анимация. Если пропустили прошлую статью, то вот ссылка на неё:
Ключевые кадры используются для указания значений свойств анимации в различных точках анимации. Ключевые кадры определяют поведение одного цикла анимации; анимация может повторяться ноль или более раз.
Ключевые кадры указываются с помощью правила @keyframes
, определяемого следующим образом:
CSS
@keyframes имя анимации { список правил }
Создание анимации начинается с установки ключевых кадров правила @keyframes
. Кадры определяют, какие свойства на каком шаге будут анимированы. Каждый кадр может включать один или более блоков объявления из одного или более пар свойств и значений. Правило @keyframes
содержит имя анимации элемента, которое связывает правило и блок объявления элемента.
CSS
@keyframes shadow { from {text-shadow: 0 0 3px black;} 50% {text-shadow: 0 0 30px black;} to {text-shadow: 0 0 3px black;} }
Ключевые кадры создаются с помощью ключевых слов from
и to
(эквивалентны значениям 0%
и 100%
) или с помощью процентных пунктов, которых можно задавать сколько угодно. Также можно комбинировать ключевые слова и процентные пункты. Если кадры имеют одинаковые свойства и значения, их можно объединить в одно объявление:
CSS
@keyframes move { from, to { top: 0; left: 0; } 25%, 75% {top: 100%;} 50% {top: 50%;} }
Если 0%
или 100%
кадры не указаны, то браузер пользователя создает их, используя вычисляемые (первоначально заданные) значения анимируемого свойства.
Если несколько правил @keyframes
определены с одним и тем же именем, сработает последнее в порядке документа, а все предыдущие проигнорируются.
После объявления правила @keyframes
, мы можем ссылаться на него в свойстве animation
:
CSS
h1 { font-size: 3.5em; color: darkmagenta; animation: shadow 2s infinite ease-in-out; }
Не рекомендуется анимировать нечисловые значения (за редким исключением), так как результат в браузере может быть непредсказуемым. Также не следует создавать ключевые кадры для значений свойств, не имеющих средней точки, например, для значений свойства color: pink
и color: #ffffff
, width: auto
и width: 100px
или border-radius: 0
и border-radius: 50%
(в этом случае правильно будет указать border-radius: 0%
).
Продолжение в следующей статье!