В этом году я провел собеседование со многими студентами, и всякий раз, когда я вижу резюме, в котором говорится «знание CSS3», я спрашиваю о знаниях, связанных с анимацией. Однако я обнаружил, что:2019
Спустя годы все еще есть много студентов, которые не будутCSS
анимация.
Вопрос, который я часто люблю задавать, заключается в том, чтобы добиться следующих эффектов:
То есть маленький шарик движется с постоянной скоростью справа200px
, затем вернитесь назад, пройдите мимо и оставайтесь на200px
Место.
Эффект анимации следующий:
Это такая простая анимация, но большинство людей не могут ответить на нее правильно.
Без дерьма, мой ответ:
div{
width: 40px;
height: 40px;
border-radius: 50%;
background: #0ff;
animation: move 2s linear 3 alternate both;
}
@keyframes move{
0%{
transform: translate(0,0);
}
100%{
transform: translate(200px,0);
}
}
Большинство интервьюеров говорили, что оCSS
Анимация, я видел несколько туториалов, но я мало использую ее на работе, поэтому забыл об этом.
Здесь я готовCSS
Друзья, у которых нет глубокого понимания анимации, должны добавить соответствующие знания. Добро пожаловать к большим парням.
Текст начинается.
Его можно найти через инструменты разработчика,animation
Свойство (анимация) является сокращением для 8 свойств.
Конкретные значения этих 8 атрибутов следующие:
Атрибуты | описывать |
---|---|
animation-duration | Указывает время, необходимое анимации для завершения цикла, в секундах (с) или миллисекундах (мс), по умолчанию 0. |
animation-timing-function | Определяет функцию синхронизации анимации, которая представляет собой кривую скорости анимации.По умолчанию используется "легкость". |
animation-delay | Указывает время задержки анимации, т.е. когда анимация начинается, по умолчанию 0. |
animation-iteration-count | Указывает, сколько раз воспроизводится анимация, по умолчанию 1. |
animation-direction | Определяет направление, в котором будет воспроизводиться анимация. По умолчанию нормально. |
animation-fill-mode | Определяет режим заливки анимации. По умолчанию нет. |
animation-play-state | Определяет состояние воспроизведения анимации, запущено или приостановлено. По умолчанию работает. |
animation-name | Указывает имя анимации @keyframes. |
Давайте подробно объясним по порядку, для чего используется каждый атрибут анимации и на что нужно обратить внимание.
CSS
Анимация, также известная как анимация по ключевым кадрам. пройти через@keyframes
для определения ключевых кадров.
Всем знакомо понятие кадра, например, фильм — это кадр из воспроизводимых картинок, и изображение используется, чтобы оставаться в мозгу человека на короткое время для формирования динамического эффекта.CSS
Анимация также использует этот принцип. Однако разработчику не нужно давать определение каждому кадру. Просто определите несколько ключевых кадров. Для остальной части кадра браузер будет интерполировать его на основе функции синхронизации.
такие как нашиdiv
Чтобы повернуть круг, вам нужно только определить начальный и конечный кадры:
@keyframes rotate{
from{
transform: rotate(0deg);
}
to{
transform: rotate(360deg);
}
}
в,rotate
это имя, которое я дал этой анимации,from
представляет первый кадр,to
Указывает кадр в конце.
Точнее,CSS
Анимация использует проценты для описания цикла анимации,from
Фактически0%
прозвище,to
да100%
прозвище. ключевые кадрыrotate
Эквивалентно:
@keyframes rotate{
0%{
transform: rotate(0deg);
}
100%{
transform: rotate(360deg);
}
}
После определения ключевого кадра вы можете использовать его напрямую:
animation: rotate 2s;
или:
animation-name: rotate;
animation-duration: 2s;
пройти черезanimation-name
来指定动画使用的关键帧,这个是必须的。 использоватьJS
Чтобы понять слова, эквивалент: только переменные объявления недостаточно, нам также нужно использовать.
Кроме того, приведенный выше код также указывает время запуска анимации.animation-duration
для2s
. Окончательный результат выглядит следующим образом:
Эффект анимации не слишком очевиден, когда квадрат вращается, он не равномерен. Из-за свойств скорости анимации в этот моментanimation-timing-function
Значение по умолчаниюease
, то есть сначала быстро, а потом медленно.
Следующая временная диаграмма иллюстрирует перемещение некоторых значений атрибутов функции case:
animation-timing-function
Общие значения:linear
,ease
,ease-in
,ease-out
,ease-in-out
. Эти значения на самом делеcubic-bezier(n,n,n,n)
особый случай. Они называются кривыми Безье. Помимо инструментов разработчика, автор «Демистификации CSS» также написал веб-сайт для онлайн-отладки кривых Безье:cubic-bezier.com. Точка знания кривой Безье очень полезна,canvas
Имеются также соответствующиеAPI
. На самом деле есть много моментов, которые можно расширить, и это только предварительное введение.
Следует отметить, что еще одним интересным значением свойства временной функции являетсяsteps
функция, которую можно использовать для реализации покадровой анимации:
Здесь вводится атрибут функции синхронизации, и значение всегда будет использоваться позже.linear
, Это означает равномерную анимацию.
Возвращаясь к ключевым кадрам, мы добавляем ключевые кадры, которые определяют начальную и конечную позиции (если не указано иное).0%
а также100%
, браузер автоматически сделает вывод), конечно, вы также можете указать, что такое рамка любого процента, например, другая реализация начального примера:
div{
width: 40px;
height: 40px;
border-radius: 50%;
background: #0ff;
animation: move 6s linear both;
}
@keyframes move{
0%{
transform: translate(0,0);
}
33%{
transform: translate(200px,0);
}
66%{
transform: translate(0,0);
}
100%{
transform: translate(200px,0);
}
}
Код ключевого кадра является избыточным и может быть дополнительно сокращен:
@keyframes move{
0%, 66%{
transform: translate(0,0);
}
33%,100%{
transform: translate(200px,0);
}
}
В этот момент продолжительность анимации была изменена на6s
, когда анимация проходит треть пути, пустьdiv
роды200px
, две трети возвращаются в исходное положение, а конец переходит в200px
место.
Это относительно интуитивная реализация, и многие интервьюеры обычно думают об этом.
Уведомлениеanimation: move 6s linear both;
в заявленииboth
. это собственностьanimation-fill-mode
значение . Это свойство легко упустить из виду, но оноCSS
Важное свойство анимации. Буквально переводится как режим заливки анимации, что это значит?
@keyframes
Он просто определяет значение каждого кадра во время процесса анимации, но в каком состоянии элемент изменяется до начала анимации и после ее окончания?animation-fill-mode
Это об этом. кроме значения по умолчаниюnone
Кроме того, есть еще 3 значения:
- вперед, указывая, что после завершения анимации состояние элемента остается состоянием последнего кадра.
- назад означает, что при задержке анимации состояние элемента остается состоянием первого кадра до начала анимации.
- оба, что указывает на то, что оба вышеупомянутых эффекта имеют одинаковый эффект.
Например,div
от100px
перейти к200px
Ключевые кадры at определяются как:
@keyframes move{
0%{
transform: translate(100px,0);
}
100%{
transform: translate(200px,0);
}
}
Установите режим заполнения наforwards
, анимация останавливается в конце200px
В:
установить задержку анимации1s
После выполнения и режим заполненияbackwards
, вы можете видеть, что анимация находится в100px
, вернуться после окончания анимации0px
В:
Наконец, установите режим заполнения наboth
ситуация:
После окончания анимации сохраняем состояние последнего кадра анимации.Это очень полезно.Например, мы можем реализовать индикатор выполнения:
div{
height: 10px;
border: 1px solid;
background: linear-gradient(#0ff,#0ff);
background-repeat: no-repeat;
background-size: 0;
animation: move 2s linear forwards;
}
@keyframes move{
100%{
background-size: 100%;
}
}
Эффект следующий:
упомянутое выше, которое можно использоватьanimation-delay
Установите время задержки. Не всем внимание, задержка может быть отрицательной. Отрицательная задержка означает, что анимация, по-видимому, выполнялась задолго до ее запуска.
Возьмите приведенный выше индикатор выполнения в качестве примера, оригинальная анимация использует2s
От0%
загружен в100%
из. Если установлена задержка-1s
. Эта анимация начнется с50%
загружен в100%
. Кажется, он работает1s
Такой же:
CSS
Анимацию можно поставить на паузу. Атрибутыanimation-play-state
Указывает состояние воспроизведения анимации, значение по умолчаниюrunning
значит играть,paused
Обозначает паузу:
animation-play-state
Это свойство очень полезно, его можно использовать с отрицательной задержкой для достижения специальных эффектов, таких как плагин индикатора выполнения:
Есть еще два свойства, которые до сих пор не были введены, одно из нихanimation-iteration-count
Указывает, сколько раз воспроизводится анимация. Это легко понять, только одно замечание, используйте при бесконечной игреinfinite
. Другое направление воспроизведенияanimation-direction
, что означает, что указанная анимация воспроизводится в указанном порядке@keyframes
Определенные ключевые кадры. Его значения:
- нормальное значение по умолчанию.
- reverse указывает, что анимация воспроизводится в обратном порядке.
- чередование означает прямое и обратное пересечение.
- чередующийся-реверс означает обратный и прямой кроссовер.
Индикация следующая:
animation
Были введены атрибуты и 8 суб-атрибутов, и следует отметить, что они связаны сbackground
Как и его подпункты, он поддерживает несколько значений, то есть нанесение нескольких анимаций в тот же элемент, предоставляя вам желаемый золотой обруч:
<style>
div{
margin: 200px;
height: 20px;
border: 1px solid;
animation: rotate 2.5s infinite, color 2s infinite, width 3s infinite;
animation-direction: normal, normal, alternate;
}
@keyframes rotate {
100%{
transform: rotate(360deg);
}
}
@keyframes color {
20%{
background-color: #f91;
}
80% {
background-color: #0ff
}
}
@keyframes width {
0% {
width: 40%;
}
100% {
width: 70%;
}
}
Эффект следующий:
Эта статья закончилась.