animation-fill-mode — CSS | MDN
Experimental
Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
CSS свойство animation-fill-mode
определяет, как нужно применять стили к объекту анимации до и после её выполнения.
animation-fill-mode: none;
animation-fill-mode: forwards;
animation-fill-mode: backwards;
animation-fill-mode: both;
animation-fill-mode: none, backwards;
animation-fill-mode: both, forwards, none;
Значения
none
- Стили анимации не будут применены к элементу до и после её выполнения.
forwards
- По окончании анимации элемент сохранит стили последнего ключевого кадра, который определяется значениями
иanimation-iteration-count
:animation-direction
animation-iteration-count
последний ключевой кадр normal
любое 100%
илиto
reverse
любое 0%
илиfrom
alternate
чётное 0%
илиfrom
alternate
нечётное 100%
или toalternate-reverse
чётное 100%
илиto
alternate-reverse
нечётное 0%
илиfrom
backwards
- Элемент сохранит стиль первого ключевого кадра на протяжении периода
animation-delay
. Первый ключевой кадр определяется значениемanimation-direction
:animation-direction
первый ключевой кадр normal
илиalternate
0%
илиfrom
reverse
илиalternate-reverse
100% или
to
both
- Анимация будет вести себя так, как будто значения forwards и backwards заданы одновременно.
Формальный синтаксис
Вы можете посмотреть эффект animation-fill-mode в следующем примере. По умолчанию, по окончании анимации стиль элемента возвращается к исходному. Значение forwards сохранит для элемента стиль последнего ключевого кадра.
HTML
<p>Наведите курсор мыши на серый блок</p>
<div>
<div>Этот просто растёт</div>
<div>Этот растёт и остаётся большим</div>
</div>
CSS
.demo { border-top: 100px solid #ccc; height: 300px; font-family: sans-serif; } @keyframes grow { 0% { font-size: 0 } 100% { font-size: 40px } } @-webkit-keyframes grow { 0% { font-size: 0 } 100% { font-size: 40px } } .demo:hover .grows { animation-name: grow; animation-duration: 3s; -webkit-animation-name: grow; -webkit-animation-duration: 3s; } .demo:hover .growsandstays { animation-name: grow; animation-duration: 3s; animation-fill-mode: forwards; -webkit-animation-name: grow; -webkit-animation-duration: 3s; -webkit-animation-fill-mode: forwards; }
BCD tables only load in the browser
Transitions vs Animations — CSS Animation
При анимации в сети, ты используешь transition (переходы) или animation (анимации)? Бывают случаи, когда ты предпочитаешь выбрать один вместо другого. Давай поговорим о различиях.
Что такое Transitions?
Переход возникает, когда элемент переходит от одного состояния к другому, и браузер выполняет в этом состоянии изменения с последовательностью в заданных промежутках между кадрами. Есть начальное и конечное состояние.
В большинстве случаев мы видим состояния переходов, которые используются при наведении курсора мыши или когда информацию на страницу добавляем/удаляем. С помощью hover могут быть мелкие изменения в цвете шрифта, а информация на странице может то постепенно исчезать, то появляться.
Поскольку переходы ограничиваются этими двумя этапами, то они нуждаются в некоторых нюансах анимации и вместе с тем их проще использовать.
Когда использовать
Если ты хочешь изменить элемент плавно с одного состояния в другой, лучше использовать transition. Как правило небольшие изменения могут быть обработаны с помощью transitions (переходов) и временных функций, а также использованы для настройки способа самого перехода.
Переход будет работать хорошо, когда кто-то навет мышку/нажмет на кнопку:
Shiny effectИли при добавлении элемента на страницу:
Add a list itemЧто такое Animations?
В CSS анимации являются более мощными альтернативами по сравнению с transitions (переходами). Вместо того, чтобы полагаться на переход от одного начального состояния к конечному, анимации могут переходить промежуточными этапами, на столько на сколько хочется, и дает больше контроля над порядком изменения состояния анимации.
Если transition устанавливает переход только от А до B, то animation может и A, и B, и C и даже D. Или любое другое количество этапов по мере необходимости.
Animations добивается этого с помощью набора ключевых кадров (keyframes). Если переход может быть определен одной строкой в классе, то анимация работает посредством ссылки на набор ключевых кадров(@keyframes), которые описаны отдельно в CSS.
Когда использовать
Если необходимо чтобы анимация выполнялась при загрузке страницы или нужна более сложная, чем от А состояния к B состоянию, то в таком случае более подходящим является CSS анимация.
Например: нужна анимация на странице, которая начинает работать по прошествии определенного периода времени, как этот эффект мигания персонажа Baymax:
Кроме того анимация может быть лучшим выбором в случае, если элемент должен двигаться по нескольким местам на странице. Например таких как: инструкция наложения с курсором из различных областей на экране.
Иногда это не очевидно
В недавним посте начал с анимации, но затем стал использовать transitions.
Когда я начала разрабатывать эти часы, стрелки у меня должны были беспрерывно двигаться начиная с загрузки. Это был наглядный пример для использования свойства animation. Анимация начиналась после загрузки и должна была продолжаться бесконечно. Когда я начал усложнять, то я обнаружил, что имеет смысл сделать с помощью JavaScript.
По мере использования JavaScript, становилось понятно что с выбором ошибся и transitions лучше подходит. Когда JavaScript изменяет положение стрелки, CSS transition обрабатывает изменение (из состояния А в состояние В) более элегантно, чем при помощи анимации.
Чтобы получить больше информации кликни по уроку CSS часы.
Заключение
Transition для создания плавного перехода от одного состояния к другому, а animation для более сложной последовательности серии передвижений.
Как правило, transition легче создавать и управлять им, а также использовать у большинства случаев. Если нужно больше контроля над анимированным элементом через серию шагов (этапов) или если при анимации необходимо начать после загрузки, то анимация с ключевыми кадрами(@keyframes) вполне более предпочтительна.
animation-delay | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS | ||
10.0+ | 3.0+ | 12.0+ | 12.10+ | 4.0+ | 5.0+ | 16.0+ | 3.0+ | 2.0+ |
Краткая информация
Версии CSS
Описание
Свойство animation-delay устанавливает время ожидания перед воспроизведением анимации. Значение 0s или 0ms, которое установлено по умолчанию, запускает анимацию сразу же, как только она применяется к элементу. Отрицательное значение также включает анимацию без задержек, но приводит к изменению последовательности начала анимации.
Допустимо указывать несколько значений, перечисляя их через запятую. Каждое значение будет применяться к свойству, заданному в параметрах animation-name.
Синтаксис
animation-delay: <время>[, <время>]*
Значения
См. время.
Пример
HTML5CSS3IE 10+CrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>animation-delay</title> <style> @-webkit-keyframes flash { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } @-moz-keyframes flash { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } @-o-keyframes flash { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } @keyframes flash { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } .flash { -webkit-animation-name: flash; -moz-animation-name: flash; -o-animation-name: flash; animation-name: flash; /* Задержка перед началом */ -webkit-animation-delay: 1s; -moz-animation-delay: 1s; -o-animation-delay: 1s; animation-delay: 1s; /* Продолжительность анимации */ -webkit-animation-duration: 1s; -moz-animation-duration: 1s; -o-animation-duration: 1s; animation-duration: 1s; } </style> </head> <body> <h2>Добро пожаловать!</h2> </body> </html>
Объектная модель
[window.]document.getElementById(«elementID»).style.animationDelay
Браузеры
Chrome, Safari, Android и iOS поддерживают нестандартное свойство -webkit-animation-delay.
Opera до версии 12.10 поддерживает нестандартное свойство -o-animation-delay.
Firefox до версии 16.0 поддерживает нестандартное свойство -moz-animaition-delay.
все параметры анимации — учебник CSS
Итак, мы с вами рассмотрели восемь разных свойств для CSS-анимации. Если записать каждое из них в отдельной строке, да еще и не забыть про вендорные префиксы, то в общей сложности получится более 30 строк кода для одной анимации!
К счастью, как и в случае с transition, в CSS есть универсальное свойство animation
, в котором можно указать сразу все параметры анимации в одной строке, разделяя их пробелом. Для наглядности ниже представлены варианты длинной и короткой записи всех свойств анимации (для экономии места мы не включали в наш пример префиксы производителей, но в реальной практике их понадобится добавить):
div { animation-name: coolAnimation; animation-duration: 3s; animation-timing-function: ease-in; animation-delay: 500ms; animation-iteration-count: 6; animation-direction: reverse; animation-fill-mode: forwards; animation-play-state: paused; } /* Стиль выше эквивалентен следующему: */ div { animation: coolAnimation 3s ease-in 500ms 6 reverse forwards paused; }
Конечно же, нет необходимости использовать каждое из восьми свойств анимации, ведь обязательными являются только два — animation-name
и animation-duration
. И если вам нужно добавить третий параметр (к примеру, animation-iteration-count
), вы можете сделать следующую запись:
div { animation: coolAnimation 3s 6; }
Если нужно применить к элементу сразу несколько анимаций и задать им разные настройки, то каждую группу значений следует отделять запятой, а в конце поставить точку с запятой:
div { animation: firstAnimation 300ms ease-in, secondAnimation 1s linear alternate; }
Далее в учебнике вас ждет большой практический урок по CSS-анимации, где мы потренируемся в трансформации элементов с помощью функций свойства transform, а также будем создавать как обычные CSS-переходы transition, так и более сложные вещи с использованием свойства animation.
animation-direction | CSS справочник
Поддержка браузерами
12.0+ | 10.0+ | 16.0+ | 43.0+ | 30.0+ | 9.0+ |
Описание
CSS свойство animation-direction указывает будет ли анимация проигрываться в реверсе на альтернативных циклах.
Если значение свойства animation-direction установлено как «alternate», анимация будет проигрываться как «normal» каждый нечетный раз (1,3,5 и тд) и как реверс каждый четный раз (2,4,6 и тд).
Если в настройках анимации установлено проигрывание только однажды, это свойство не будет иметь эффекта.
Значение по умолчанию: | normal |
---|---|
Применяется: | ко всем элементам и псевдо-элементам ::before и ::after |
Анимируется: | нет |
Наследуется: | нет |
Версия: | CSS3 |
Синтаксис JavaScript: | object.style.animationDirection=»alternate» |
Синтаксис
animation-direction: normal|reverse|alternate|alternate-reverse;
Значения свойства
Значение | Описание |
---|---|
normal | После прохождения полного цикла анимация сбрасывается в начальное состояние и начинается заново. |
reverse | Анимация воспроизводится в обратном направлении, то есть каждый раз анимация начинает свое воспроизведения со своей конечной точки, проходит весь цикл и начинается заново. |
alternate | После прохождения полного цикла анимация изменяет свое направление на противоположное. При воспроизведении в обратном направлении все шаги анимации выполняются наоборот. |
alternate-reverse | Анимация начинает воспроизводится в обратном направлении, потом меняя свое направление на противоположное. |
Пример
div#myDIV {
animation-direction:normal;
}
CSS Animations — описание и примеры использования
Что такое CSS Animations?
Уже довольно давно поддержка анимированных эффектов на web-страницах осуществлялась либо за счет средств HTML (пресловутый тег blink и marquee), либо, если надо было добиться чего-то большего — при помощи комбинирования CSS и JavaScript. Кроме того, оставались варианты с Flash и SVG. Однако все последние варианты достаточно сложны (требуют программирования), и предъявляют определенные требования к платформе (Flash, мало того, что «тормозит» и «зависает», так еще и не дружит с iOS).
Но около 2-х лет назад в рамках W3C было предложено дополнить спецификацию CSS 3 еще двумя модулями — CSS Animations и CSS Transitions. При помощи CSS Animations и CSS Transitions можно задать, скажем, начальное и конечное состояние объекта и способ перехода от одного состояния к другому. И вот, с выходом 5-й версии Firefox, уже можно сказать, что существенная часть современных браузеров поддерживает CSS-анимацию. Собственно говоря, кроме браузеров на движке Gecko выше 2.0 (Firefox 5, SeaMonkey 2.2), это браузеры на движке WebKit 53x (Safari 4, Chrome). Таким образом, учитывая сложившиеся тенденции, уже в ближайшее время свыше половины пользователей будут иметь программы просмотра веб-страниц, поддерживающие CSS animation/transition (последний, кстати был реализован еще раньше — в Safari 3 и Firefox 4).
Различие между CSS Animations и CSS Transitions состоит в том, что Animations представляет больше возможностей по управлению трансформацией объекта. Правда, при этом, опять-таки потребуется применение сценариев JavaScript. Иначе говоря, Animations — для программистов, а Transitions — для всех. Скажем, если вам нужно просто сделать кнопку, плавно меняющую цвет фона при наведении мышки, то можно ограничиться Transitions. Если же надо добиться более сложного выполнения — скажем, определить число повторов, а так же способ возвращения к исходной позиции между циклами, либо определить ключевые кадры (keyframes), то следует использовать Animations.
Всего в CSS3 предусмотрено 8 свойств для CSS-анимации (перечислены в таблице ниже) и объединяющее свойство animation для перечисления сразу нескольких параметров (подобно border, background и т.п.).
Свойство | Допустимые значения | Описание |
---|---|---|
animation-delay | (время) | Определяет задержку между появлением элемента на странице (загрузкой) и началом анимации. Чаще всего определяется в секундах (s). |
animation-direction | normal | alternate | Определяет, должна ли анимация при каждой итерации начинаться со стартовой позиции (normal) или возвращаться к стартовой позиции, выполняя с обратном порядке все указанные эффекты (alternate). |
animation-duration | (время) | Указывает продолжительность одного цикла (обычно в секундах — s) |
animation-iteration-count | infinite | (число) | Определяет число повторов циклов анимации. Если указано infinite (принято по умолчанию), то анимация будет происходить бесконечно, если же указано число, то повторится указанное число раз. |
animation-name | строка-идентификатор | Задает имя @-правила keyframe, в котором описаны параметры анимации. |
animation-play-state | running | paused | Позволяет «ставить на паузу» выполнение анимации (paused) и запускать её снова (running). |
animation-timing-function | ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1,x2,x3,x4) | Определяет то, должно ли быть ускорение/замедление выполнения анимационного эффекта в начале и/или конце. |
animation-fill-mode | none | forwards | backwards | both | Определяет порядок применения определенных в @keyframes стилей к объекту — до анимации (backwards), после анимации (forwards), в обоих крайних позициях (both), или же не следует их применять вообще (none, по умолчанию). |
animation | — | Короткий вариант синтаксиса (объединяет animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction) |
Следует учитывать, что вплоть до текущего момента CSS Animation является экспериментальным свойством, а спецификация CSS3 по нему имеет статус Working Draft (черновик). Поэтому в бразуерах оно поддерживается с префиксом -webkit- (для Chrome/Safari) и -moz- (для Firefox/SeaMonkey). То же самое касается и дескриптора @keyframes.
Ну а теперь можно рассмотреть использование CSS Animations на примерах. Для начала попробуем сделать заголовок, постепенно меняющий свой цвет с желтого на зеленый:
h3 {
background: yellow; /* начальное значение */
-moz-animation-name: blinked; /* имя используемого @-правила анимации */
-moz-animation-duration: 2s; /* продолжительность эффекта - 2 секунды */
-moz-animation-iteration-count: infinite; /* повторять бесконечно */
-moz-animation-direction: alternate; /* при повторе постепенно возвращаться к начальному состоянию */
/* далее - все то же самое для Chrome и Safari */
-webkit-animation-name: blinked;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
}
/* правило для браузеров Mozilla */
@-moz-keyframes blinked {
to {background: green;}
}
/* правило для браузеров Chrome и Safari */
@-webkit-keyframes blinked {
to {background: green;}
}
Таким образом, любой заголовок h3, имеющийся на странице, для которой определена такая таблица стилей, будет постепенно изменять цвет своего фона с желтого на зеленый и обратно в браузерах Firefox 5, Safari 4 и Chrome 3 или выше. Во всех остальных он будет постоянно на желтом фоне.
А теперь усложним задачу: пусть заголовок выезжает из нижней части экрана и двигается наверх, при этом изменяя свой цвет с зеленого на желтый. Для этого нам надо, во-первых, установить абсолютное позиционирование элемента, а во-вторых — задать значения top для начального и конечного кейфреймов. Так же следует изменить число повторов с бесконечности на 1, увеличить продолжительность анимации до, скажем, 5 секунд и удалить за ненадобностью определение вида повтора. В итоге мы получаем следующее:
h3 {
background: yellow; /* начальное (и конечное) значение */
position: absolute;
top: 1%;
-moz-animation-name: blinked; /* имя используемого @-правила анимации */
-moz-animation-duration: 5s; /* продолжительность эффекта - 5 секунд */
-moz-animation-iteration-count: 1; /* выполнить 1 раз */
-webkit-animation-name: blinked;
-webkit-animation-duration: 5s;
-webkit-animation-iteration-count: 1;
}
@-moz-keyframes blinked {
from {
top: 99%;
background: green;
}
to {
top: 1%;
background: yellow;
}
}
/* правило для браузеров Chrome и Safari */
@-webkit-keyframes blinked {
from {
top: 99%;
background: green;
}
to {
top: 1%;
background: yellow;
}
}
Теперь разберемся с паузой. Пусть наша CSS-анимация приостанавливается, если пользователь «поймает» указателем мышки заголовок в момент его перемещения. Для этого можно воспользоваться псевдоклассом hover для h3, в котором надо будет определить animation-play-state:
h3:hover {
-moz-animation-play-state: paused; /* при наведении курсора приостановить анимацию */
-webkit-animation-play-state: paused;
}
До этого момента мы определяли только начальное и конечное значения. Но вся прелесть CSS Animations (в отличие от Transitions) состоит в том, что можно указывать промежуточные положения. Определяют их в процентах от времени выполнения. Так, пусть наш заголовок после того, как поднимется вверх, переедет на пол экрана вправо. Тогда надо определить нужные положения в соответствующие моменты. Так, раз наш «ролик» длится 5 секунд, то на поднятие выделим 4 секунды, а на перемещение вправо — 1. Соответственно, это составляет 80% и 20% от 5 секунд. Получаем для Firefox:
@-moz-keyframes blinked {
from {
top: 99%;
left: 0%;
background: green;
}
80% {
top: 1%;
left: 0%;
}
to {
top: 1%;
left: 50%;
background: yellow;
}
}
Для Chrome – аналогично. Однако, проблема в том, что после завершения анимции блок «скачком» вернется влево, на свою начальную позицию. Решить эту проблему можно двумя способами. Во-первых, можно указать left: 50% в основном определении для h3. Кроме того, состояние объекта до и после анимации можно контролировать при помощи animation-fill-mode. По-хорошему, надо бы использовать оба этих способа. Ну а если мы хотим. Чтобы выполнение анимации началось не сразу, а через секунду после загрузки страницы, до следует указать это при помощи свойства animation-delay. В результате мы получим следующий CSS-код:
h3 {
background: yellow; /* начальное (и конечное) значение */
position: absolute;
top: 1%;
-moz-animation-name: blinked; /* имя используемого @-правила анимации */
-moz-animation-duration: 5s; /* продолжительность эффекта - 5 секунд */
-moz-animation-iteration-count: 1; /* выполнить 1 раз */
-moz-animation-delay: 1s; /* начало анимации — через 1 секунду после загрузки */
-moz-animation-fill-mode: both; /* применить определенные в @-правила к объекту и до и после анимации */
-webkit-animation-name: blinked;
-webkit-animation-duration: 5s;
-webkit-animation-iteration-count: 1;
-webkit-animation-delay: 1s; /* начало анимации — через 1 секунду после загрузки */
-webkit-animation-fill-mode: both;
}
h3:hover {
-moz-animation-play-state: paused; /* при наведении курсора приостановить анимацию */
-webkit-animation-play-state: paused;
}
@-moz-keyframes blinked {
from {
top: 99%;
left: 0%;
background: green;
}
80% {
top: 1%;
left: 0%;
}
to {
top: 1%;
left: 50%;
background: yellow;
}
}
@-webkit-keyframes blinked {
from {
top: 99%;
background: green;
}
80% {
top: 1%;
left: 0%;
}
to {
top: 1%;
left: 50%;
background: yellow;
}
}
Остается рассмотреть последнее свойство — animation-timing-function. Оно определяет скорость выполнения эффекта при помощи кривых Безье. При этом можно как использовать функцию cubic-bezier, устанавливая свои значения, так и использовать один из 5 пресетов:
- ease соответствует cubic-bezier(0.25, 0.1, 0.25, 1.0).
- linear соответствует cubic-bezier(0.0, 0.0, 1.0, 1.0).
- ease-in соответствует cubic-bezier(0.42, 0.0, 1.0, 1.0).
- ease-out соответствует cubic-bezier(0.0, 0.0, 0.58, 1.0).
- ease-in-out соответствует cubic-bezier(0.42, 0.0, 0.58, 1.0).
Чтобы лучше разобраться, попробуйте установить для -moz-animation-timing-function и -webkit-animation-timing-function те или иные значения. В результате скорость выполенения будет то возрастать в начале и уменьшаться в конце, то наоборот. Указывать эти свойства можно как в общем определении, так и для отдельный кейфреймов. Например:
from {
top: 99%;
left: 0%;
background: green;
-moz-animation-timing-function: linear;
}
В итоге подъем заголовка будет происходить с равной скоростью, без постепенного замедления, как задается в принятом по умолчанию ease.
2011-07-12 // Есть вопросы, предложения, замечания? Вы можете обсудить это на форуме !
easy-animation-css — npm
Property EasyAnimation
EasyAnimation.
prefixУстанавливает префикс для классов: …-enter, …-enter-active, …-enter-to, …-leave, …-leave-active, …-leave-to.
Methods EasyAnimation
EasyAnimation.
transition(element[, callback = null])element — DOMelement, над котором будет производиться скрытие или показ, в зависимости от состояния CSS свойства display. Если none — показ, если block — скрытие.
callback — Функция, которая будет вызываться когда анимация начнется и закончится.
EasyAnimation.
transitionInsert(targetInsert, newElement[, before = null[, callback = null]])targetInsert — DOMelement, в который будет вставляться новый элемент.
newElement — Новый элемент, который нужно вставить.
before — DOMelement, перед которым нужно вставить.
callback — Функция, которая будет вызываться когда анимация начнется и закончится.
EasyAnimation.
transitionRemove(element[, callback = null])element — DOMelement, который нужно удалить.
callback — Функция, которая будет вызываться когда анимация начнется и закончится.
callback
Функция, которая вызывается в начале и конце анимаций.
Всегда вызывется с одним аргументом objectOptions.
Property objectOptions
element — DOMelement, над которым производится или производилась анимация.
type — Тип действия которое производится или производилось.
- show — Когда элемент показывается
- hide — Когда элемент скрывается
- insert — Когда элемент вставляется
- remove — Когда элемент удаляется
when— Время вызова функции.
- before — До начала анимации
- after — После конца анимации
related — true, если текущая анимация прервала прошлую, на этом элементе.
CSS-переходов и анимации наведения, интерактивное руководство
Мир веб-анимации превратился в бескрайние джунгли инструментов и технологий. Библиотеки, такие как GSAP и Framer Motion и React Spring, появились, чтобы помочь нам добавить движение в DOM.
Однако наиболее фундаментальной и важной частью является скромный переход на CSS. Это первый инструмент анимации, который изучает большинство разработчиков интерфейса, и это рабочая лошадка. Даже самые обветренные ветераны анимации по-прежнему часто обращаются к этому инструменту.
В этой теме есть удивительная глубина. В этом уроке мы углубимся и узнаем немного больше о переходах CSS и о том, как мы можем использовать их для создания сочной, отточенной анимации.
Целевая аудиторияЭто руководство предназначено для разработчиков с любым уровнем опыта. Его можно рассматривать как «CSS-переходы 101». Тем не менее, я добавил несколько интересных и малоизвестных лакомых кусочков — независимо от вашего уровня опыта, держу пари, вы чему-то научитесь!
Главный компонент, который нам нужен для создания анимации, — это изменяющийся CSS.
Вот пример кнопки, которая перемещается при наведении курсора, без анимации :
В этом фрагменте кода используется псевдокласс : hover
, чтобы указать дополнительное объявление CSS, когда указатель мыши находится поверх нашей кнопки, аналогично onMouseEnter
событие в JavaScript.
Чтобы сдвинуть элемент вверх, мы используем преобразование : translateY (-10px)
. Хотя для этого мы могли бы использовать margin-top
, преобразование : перевод
— лучший инструмент для этой работы.Позже мы увидим почему.
По умолчанию изменения в CSS происходят мгновенно. В мгновение ока наша кнопка телепортировалась на новое место! Это несовместимо с миром природы, где все происходит постепенно.
Мы можем указать браузеру интерполировать из одного состояния в другое с метко названным свойством transition
:
transition
может принимать несколько значений, но требуются только два:
Имя свойства, которое мы хотим анимировать
Продолжительность анимации
Если вы планируете анимировать несколько свойств, вы можете передать его в виде списка, разделенного запятыми:
Выбор всех свойств transition-property
принимает особое значение: все
.Когда все
указаны, любое изменяемое свойство CSS будет перенесено.
Может возникнуть соблазн использовать это значение, поскольку оно экономит нам много времени при вводе при анимации нескольких свойств, но я рекомендую не использовать его.
По мере развития вашего продукта вы (или кто-то из вашей команды), вероятно, в какой-то момент в будущем обновите этот код. Неожиданная анимация могла проскользнуть.
Анимация похожа на соль: слишком много ее портит блюдо.Стоит быть действительно точным с анимируемыми свойствами.
Когда мы говорим элементу перейти из одной позиции в другую, браузеру необходимо определить, как должен выглядеть каждый «промежуточный» фрейм.
Например: предположим, что мы перемещаем элемент слева направо в течение 1 секунды. Плавная анимация должна работать со скоростью 60 кадров в секунду *, что означает, что нам нужно придумать 60 отдельных позиций между началом и концом.
Давайте начнем с того, что они будут равномерно распределены:
Щелкните меня!
Чтобы прояснить, что здесь происходит: каждый блеклый кружок представляет момент времени.Когда круг перемещается слева направо, это кадры, которые были показаны пользователю. Это как флипбук.
В этой анимации мы используем линейную функцию синхронизации . Это означает, что элемент движется в постоянном темпе; наш круг перемещается на одинаковую величину каждый кадр.
В CSS доступно несколько функций времени. Мы можем указать, какой из них мы хотим использовать со свойством transition-timer-function
:
Или мы можем передать его напрямую в сокращенное свойство transition
:
linear
редко бывает лучшим выбором в конце концов, в реальном мире почти ничего не движется в эту сторону *.Хорошая анимация имитирует мир природы, поэтому мы должны выбрать что-то более органичное!
Давайте пробежимся по нашим вариантам.
Ссылка на эту товарную позицию
легкость выхода легкость выхода
врывается, как дикий бык, но у него заканчивается энергия. В конце концов, он корчит, как сонная черепаха.
Попробуйте прокрутить по временной шкале; обратите внимание, насколько резким является движение в первых нескольких кадрах и насколько оно становится незаметным к концу.
Если бы мы изобразили смещение элемента во времени, это выглядело бы примерно так:
Когда вы использовали бы смещения
? Чаще всего используется, когда что-то поступает за пределами экрана (например,модальное появление). Создается впечатление, что что-то ворвалось издалека и останавливается перед пользователем.
Ссылка на эту товарную позицию
easy-in easy-in
неудивительно, что это противоположность easy-out
. Он запускается медленно и ускоряется:
Как мы видели, easy-out
полезен для вещей, которые попадают в поле зрения вне экрана. easy-in
, естественно, пригодится для обратного: перемещения чего-либо за пределы области просмотра.
Эта комбинация полезна, когда что-то входит и выходит из области просмотра, например, из модального окна. Вскоре мы рассмотрим, как смешивать и согласовывать функции синхронизации.
Обратите внимание, что easy-in
в значительной степени полезно исключительно для анимаций, которые заканчиваются закадровым или невидимым элементом; в противном случае резкая остановка может вызвать раздражение.
Ссылка на данную товарную позицию
легкость входа-выхода Далее, легкость входа-выхода
. Это комбинация двух предыдущих функций синхронизации:
Эта функция синхронизации является симметричной .У него равное количество ускорений и замедлений.
Я считаю эту кривую наиболее полезной для всего, что происходит в цикле (например, когда элемент постепенно появляется и исчезает, снова и снова).
Это большой шаг вперед по сравнению с linear
, но перед тем, как вы начнете использовать его во всем, давайте рассмотрим еще один вариант.
Если бы у меня была своя точка зрения от авторов языка CSS, когда дело доходит до переходов, так это то, что легкость
плохо названа. Это совсем не описательно; буквально все функции тайминга в той или иной степени являются облегчениями!
Если не считать придирки, easy
просто потрясающе.В отличие от
с легкостью вставки и извлечения, он несимметричен; он имеет кратковременное ускорение и замедление лота .
легкость
— значение по умолчанию — если вы не укажете функцию синхронизации, будет использоваться легкость
. Честно говоря, мне это кажется правильным. easy
— отличный вариант в большинстве случаев. Если элемент перемещается, но не входит в область просмотра и не выходит из нее, обычно хорошим выбором будет легкость
.
Важное замечание обо всех этих демонстрациях: время постоянно .Функции синхронизации описывают, как значение должно переходить от 0 до 1 за фиксированный интервал времени, а не , а , как быстро должна завершиться анимация. Некоторые функции синхронизации могут казаться быстрее или медленнее, но в этих примерах все они выполняются ровно за 1 секунду.
Ссылка на этот заголовок
Пользовательские кривыеЕсли предоставленные встроенные параметры не соответствуют вашим потребностям, вы можете определить свою собственную кривую плавности, используя функцию синхронизации кубической кривой Безье!
Все значения, которые мы видели до сих пор, на самом деле являются просто предустановками для этой функции кубической кривой Безье
.Требуется 4 числа, представляющих 2 контрольные точки.
Кривые Безье действительно хороши, но они выходят за рамки этого руководства. Но я скоро напишу о них больше!
А пока вы можете начать создавать свои собственные временные функции Безье, используя этот замечательный помощник от Lea Verou:
Как только вы придумаете кривую анимации, которая вас устраивает, нажмите «Копировать» вверху и вставьте ее в ваш CSS!
Вы также можете выбрать из этого расширенного набора функций синхронизации.Но будьте осторожны: некоторые из наиболее диковинных опций не работают в CSS.
Начиная с пользовательских кривых Безье, может быть трудно придумать кривую, которая кажется естественной. Однако после некоторой практики это невероятно выразительный инструмент .
Мне пора прийти в себяЯ должен признаться: приведенные выше демонстрации, демонстрирующие различные функции синхронизации, были преувеличены.
По правде говоря, временные функции, такие как easy-in
, более тонкие, чем изображено, но я хотел подчеркнуть эффект, чтобы облегчить понимание.Это стало возможным благодаря функции синхронизации кубической кривой Безье
!
Ранее мы упоминали, что анимация должна работать со скоростью 60 кадров в секунду. Однако когда мы проводим вычисления, мы понимаем, что это означает, что у браузера есть только 16,6 миллисекунды для рисования каждого кадра. На самом деле времени совсем немного; для справки, моргание занимает около 100-300 мсек!
Если наша анимация слишком затратна в вычислительном отношении, она будет казаться рывкой и заиканием. Рамки будут выпадать, так как устройство не успевает.
Убедитесь в этом сами, настроив новый элемент управления «Число кадров в секунду»:
На практике низкая производительность часто проявляется в виде переменной частоты кадров , так что это не идеальная симуляция.
Анимация — это удивительно глубокая и интересная область, выходящая далеко за рамки этого вводного руководства. Но давайте рассмотрим абсолютно важные, важные моменты:
-
Некоторые свойства CSS анимировать намного дороже, чем другие.Например, высота
-
Другие свойства, такие как
background-color
, анимировать довольно дорого. Они не влияют на макет, но требуют свежего слоя краски на каждой раме, что недешево. -
Два свойства —
преобразовать
и непрозрачностьwidth
илиleft
, можно значительно улучшить , переместив его вtransform
(хотя не всегда можно добиться того же эффекта). -
Обязательно протестируйте анимацию на самом низком устройстве, на которое нацелен ваш сайт / приложение. Ваша машина разработки, вероятно, во много раз быстрее ее.
Если вам интересно узнать больше о производительности анимации, я выступал на эту тему на React Rally.Он углубляется в эту тему:
Ссылка на этот заголовок
Аппаратное ускорениеВ зависимости от вашего браузера и ОС вы могли заметить любопытное небольшое несовершенство в некоторых из предыдущих примеров:
Pay close внимание к буквам. Обратите внимание, как они выглядят слегка глючными в начале и в конце перехода, как будто все встало на свои места?
Это происходит из-за переключения между CPU и GPU компьютера.Позволь мне объяснить.
Когда мы анимируем элемент с помощью преобразования
и непрозрачности
, браузер иногда пытается оптимизировать эту анимацию. Вместо того, чтобы растрировать пиксели в каждом кадре, он передает все на графический процессор в виде текстуры. Графические процессоры очень хорошо справляются с подобными преобразованиями на основе текстур, и в результате мы получаем очень гладкую и очень производительную анимацию. Это известно как «аппаратное ускорение».
Вот проблема: графические процессоры и процессоры визуализируют несколько по-разному.Когда центральный процессор передает его графическому процессору, и наоборот, вы видите, как все немного сдвигается.
Мы можем решить эту проблему, добавив следующее свойство CSS:
will-change
— это свойство, которое позволяет нам намекать браузеру, что мы собираемся анимировать выбранный элемент и что он должен оптимизировать для этот случай.
На практике это означает, что браузер позволяет графическому процессору обрабатывать этот элемент все время . Больше никаких переключений между процессором и графическим процессором, никакой контрольной «фиксации на месте».
will-change
позволяет нам целенаправленно определять, какие элементы следует аппаратно ускорять. У браузеров есть своя непостижимая логика вокруг этого материала, и я бы не хотел оставлять это на волю случая.
Есть еще одно преимущество аппаратного ускорения: мы можем воспользоваться преимуществом рендеринга субпикселей .
Посмотрите эти две анимации ниже. Один выполняется с использованием с верхним краем
, поэтому он не может быть аппаратно ускорен. Заметили разницу между ними?
Свойства, такие как margin-top
, не могут выполнять субпиксельную визуализацию, что означает, что их необходимо округлять до ближайшего пикселя, создавая ступенчатый, резкий эффект. transform
, тем временем, может плавно переключаться между пикселями благодаря уловке сглаживания графического процессора.
Ничто в жизни не дается бесплатно, и аппаратное ускорение — не исключение.
Передав отрисовку элемента графическому процессору, он будет потреблять больше видеопамяти, а этот ресурс может быть ограничен, особенно на мобильных устройствах более низкого уровня.
Это не такая большая проблема, как раньше — я провел несколько тестов на Xiaomi Redmi 7A, популярном бюджетном смартфоне в Индии, и, похоже, он работает нормально.Только не применяйте широко будет менять
к элементам, которые не двигаются. Обдумайте, где вы его используете.
Аппаратное ускорение существует уже давно — фактически, дольше, чем свойство изменит свойство
!
В течение долгого времени это выполнялось с помощью трехмерного преобразования, такого как transform: translateZ (0px)
. Даже со значением 0px браузер по-прежнему передает его графическому процессору, поскольку перемещение в трехмерном пространстве определенно является сильной стороной графического процессора.Также есть backface-visibility: hidden
.
Когда вышел will-change
, он должен был дать разработчикам правильный, семантически значимый способ намекнуть браузеру, что элемент следует оптимизировать. Однако вначале у были проблемы с заменой
.
К счастью, похоже, что все эти проблемы были решены. Я провел некоторое тестирование и обнаружил, что получаю лучшие результаты в современных браузерах с будет заменять
.Но вы всегда должны проводить собственное тестирование, чтобы убедиться, что эти методы работают на целевых устройствах и браузерах.
Ссылка на этот заголовок
Движение, управляемое действиемДавайте еще раз взглянем на нашу поднимающуюся кнопку «Hello World».
Hello World
В его нынешнем виде у нас есть «симметричный» переход — анимация входа такая же, как и анимация выхода:
-
При наведении курсора мыши на элемент он смещается вверх на 10 пикселей. 250 мс
-
Когда мышь отодвигается, элемент смещается вниз на 10 пикселей за 250 мс
Маленькая милая деталь — дать каждому действию собственные настройки перехода.Для анимации наведения мне нравится делать анимацию входа быстрой и быстрой, в то время как анимация выхода может быть немного более расслабленной и вялой:
Другой распространенный пример — модальные окна. Для модальных окон может быть полезно входить с анимацией с легкостью выхода
и выходить с более быстрой анимацией с легкостью в
:
Это небольшая деталь, но она говорит о гораздо большей идее.
Я считаю, что большинство разработчиков думают в терминах состояний : например, вы можете посмотреть на эту ситуацию и сказать, что у нас есть состояние «зависания» и состояние по умолчанию.Вместо этого, что, если бы мы думали о действиях ? Мы анимируем, основываясь на том, что делает пользователь, думая в терминах событий, а не состояний. У нас есть анимация ввода мыши и анимация выхода мыши.
Тобиас Алин показывает, как эта идея может создавать семантически значимые анимации следующего уровня в своем сообщении в блоге Meaningfun Motion with Action-Driven Animation.
Ссылка на этот заголовок
ЗадержкиЧто ж, мы довольно далеко продвинулись в своем стремлении овладеть переходами CSS, но есть пара заключительных деталей, о которых стоит рассказать.Поговорим о задержках перехода.
Я считаю, что почти каждый уже сталкивался с этим разочаровывающим опытом раньше:
Изображение любезно предоставлено Беном Каменсом
Как разработчик, вы, вероятно, можете понять, почему это происходит: раскрывающийся список остается открытым только при наведении курсора! Когда мы перемещаем мышь по диагонали для выбора дочернего элемента, наш курсор выходит за пределы, и меню закрывается.
Эту проблему можно решить довольно элегантным способом, не прибегая к JS.Мы можем использовать transition-delay
!
transition-delay
позволяет нам сохранять статус-кво в течение короткого промежутка времени. В этом случае, когда пользователь перемещает указатель мыши за пределы .dropdown-wrapper
, в течение 300 мс ничего не происходит. Если их мышь повторно входит в элемент в пределах этого 300-миллисекундного окна, переход никогда не происходит.
По прошествии 300 мс переход
срабатывает нормально, и выпадающий список исчезает через 400 мс.
До сих пор мы использовали сокращение transition
для объединения всех наших значений, связанных с переходом. transition-delay
также можно использовать с сокращением:
Ссылка на этот заголовок
Мерцание гибелиКогда элемент перемещается вверх или вниз при наведении курсора, мы должны быть очень осторожны. не вводите случайно «мерцание обреченности»:
Предупреждение: Этот GIF-файл содержит мерцающие движения, которые потенциально могут вызвать припадки у людей с светочувствительной эпилепсией.
RevealВы могли заметить похожий эффект на некоторых демонстрациях на этой странице!
Неполадка возникает, когда мышь приближается к границе элемента.Эффект наведения выводит элемент из-под мыши, что заставляет его снова падать под мышкой, что вызывает повторное срабатывание эффекта наведения… много раз в секунду.
Как решить эту проблему? Уловка состоит в том, чтобы отделить триггер от эффекта . Вот краткий пример:
У нашего
теперь есть новый дочерний элемент, .background
. Этот диапазон содержит все косметические стили (цвет фона, шрифт и т. Д.).
Когда мы наводим курсор мыши на обычную кнопку, это заставляет ребенка выглядывать сверху. Но кнопка остается неподвижной.
Попробуйте раскомментировать контур
, чтобы увидеть, что именно происходит!
Когда я вижу в сети хорошо созданную анимацию, я реагирую с восторгом и ликованием. Однако люди разные, и у некоторых людей наблюдается очень разная реакция: тошнота и недомогание.
Я уже писал ранее о соблюдении «предпочитает уменьшенное движение», настройки уровня ОС, которые пользователи могут переключать, чтобы выразить предпочтение меньшему движению.Давайте применим эти уроки здесь, отключив анимацию для людей, которые ее запрашивают:
Эта небольшая настройка означает, что анимация будет разрешена немедленно для пользователей, которые вошли в свои системные настройки и установили флажок.
Как разработчики внешнего интерфейса, мы несем определенную ответственность за то, чтобы наши продукты не причиняли вреда. Это быстрый шаг, который мы можем предпринять, чтобы сделать наши сайты / приложения более дружелюбными и безопасными.
CSS-переходы фундаментальны, но это не значит, что они легкие.В них есть удивительная глубина; даже в этом длинном сообщении в блоге мне пришлось вырезать некоторые вещи, чтобы сохранить управляемость!
Веб-анимация важнее, чем думает большинство разработчиков. Единственный переход здесь или там не сделает и не испортит впечатление, но он складывается. В целом хорошо выполненная анимация может оказать удивительно глубокое влияние на общее впечатление пользователя.
Переходы могут сделать приложение «реальным». Они могут предлагать обратную связь и общаться более интуитивно, чем просто копировать.Они могут научить людей пользоваться вашими продуктами. Они могут вызвать радость.
Если вам понравилось это руководство, возможно, вам будет приятно узнать, что Я создаю курс CSS ! Мой курс специально создан для разработчиков JavaScript, и это комплексный курс с нуля, который научит вас быть уверенным и бесстрашным с помощью CSS.
Он построен на том же стеке технологий, что и этот блог, поэтому имеет тот же стиль встроенных интерактивных виджетов, но идет еще дальше.В моем курсе есть видео, мини-игры, мастер-классы и многое другое.
Вы можете узнать больше на официальном сайте CSS для разработчиков JavaScript.
Наконец, ни одно интерактивное занятие не обходится без «режима песочницы»! Поиграйте со всеми предыдущими настройками (и парой новых!) И создайте генеративное искусство с помощью этого открытого виджета:
Timing Functionlineareaseease-inease-outease-in-outease (supercharged) easy-in (supercharged) easy-out ( с наддувом) легкость входа (с наддувом) overshotShapeCircleSquareGhost Opacity
Анимация — попутный ветер CSS
Spin
Добавьте утилиту animate-spin
для добавления линейной анимации вращения к таким элементам, как индикаторы загрузки.
Ping
Добавьте утилиту animate-ping
, чтобы масштабировать элемент и исчезать, как пинг радара или рябь воды — полезно для таких вещей, как значки уведомлений.
Pulse
Добавьте утилиту animate-pulse
, чтобы элемент плавно появлялся и исчезал — полезно для таких вещей, как загрузчики скелетов.
Bounce
Добавьте утилиту animate-bounce
, чтобы элемент подпрыгивал вверх и вниз — полезно для таких вещей, как индикаторы «прокрутки вниз».
Предпочитает-уменьшенное движение
Вы можете условно применять анимацию и переходы, используя варианты motion-safe
и motion-reduce
:
Эти варианты не включены по умолчанию , но вы можете включить их в разделе вариантов
файла tailwind.config.js
:
модуль.экспорт = {
варианты: {
анимация: ['отзывчивый', 'безопасный при движении', 'уменьшение движения']
}
}
Подробнее читайте в документации государственных вариантов.
Адаптивный
Чтобы изменить или отключить анимацию в определенной точке останова, добавьте префикс {screen}:
к любой существующей утилите анимации. Например, используйте md: animate-none
, чтобы применить утилиту animate-none
только при средних размерах экрана и выше.
Для получения дополнительной информации о функциях адаптивного дизайна Tailwind ознакомьтесь с документацией по адаптивному дизайну.
Настройка
Анимации по самой своей природе, как правило, сильно зависят от проекта. Анимации, которые мы включаем по умолчанию, лучше всего рассматривать как полезные примеры , и вам предлагается настроить анимацию в соответствии с вашими потребностями.
По умолчанию Tailwind предоставляет утилиты для четырех различных примеров анимации, а также утилиту animate-none
. Вы изменяете, добавляете или удаляете их, настраивая раздел анимации
конфигурации вашей темы.
module.exports = {
тема: {
продлевать: {
animation: {
+ 'spin-slow': 'вращать 3 секунды линейно бесконечно',
}
}
}
}
Чтобы добавить новую анимацию @keyframes
, используйте раздел ключевых кадров
конфигурации вашей темы:
module.exports = {
тема: {
продлевать: {
ключевые кадры: {
+ wiggle: {
+ '0%, 100%': {transform: 'rotate (-3deg)'},
+ '50% ': {transform:' rotate (3deg) '},
+}
}
}
}
}
Затем вы можете ссылаться на эти ключевые кадры по имени в разделе анимации
конфигурации вашей темы:
модуль.экспорт = {
тема: {
продлевать: {
animation: {
+ wiggle: 'покачивание 1s, легкость входа-выхода бесконечна',
}
}
}
}
Дополнительные сведения о настройке темы по умолчанию см. В документации по настройке темы.
Варианты
По умолчанию для утилит анимации создаются только адаптивные варианты.
Вы можете контролировать, какие варианты создаются для утилит анимации, изменяя свойство animation
в разделе вариантов
вашего попутного ветра .config.js
файл.
Например, эта конфигурация также будет генерировать варианты наведения и фокусировки:
module.exports = {
варианты: {
продлевать: {
+ анимация: ['hover', 'focus'],
}
}
}
24 креативных и уникальных примера анимации CSS, которые вдохновят вас
Будь то улучшение кнопки, сокращение времени загрузки страницы или добавление некоторой изюминки к целевой странице, анимация — эффективный способ удерживать внимание и восхищать зрителей на вашем сайте.
Хотя есть несколько способов добавить анимированную графику на веб-страницу, одним из самых простых является использование анимации CSS, для реализации которой не требуется ничего, кроме некоторых ноу-хау HTML и CSS.
Если вы хотите добавить в свою работу CSS-анимацию, может быть полезно сначала взглянуть на некоторые успешные применения CSS-анимации, прежде чем углубляться в нее. Это дополнительное исследование может вдохновить ваши собственные проекты и дать представление о том, чего вы можете достичь с помощью эта мощная функция.
Вот почему мы собрали наши любимые примеры CSS-анимации из CodePen — онлайн-инструмента для создания и обмена фрагментами кода в HTML и CSS — чтобы помочь творческим сокам течь.
Но сначала краткий обзор обсуждаемой темы …
Как работает CSS-анимация?
CSS-анимация — это функция CSS, которая позволяет анимировать изменение одного или нескольких свойств стиля элемента, а также управлять различными аспектами анимации. Анимация на чистом CSS не требует дополнительного кода (например, JavaScript) или мультимедиа (например, GIF) — все делается с помощью HTML и CSS.
CSS-анимацияотлично подходит для веб-сайтов, которые хотят добавлять динамический, интересный контент, не придавая странице большого веса.Поскольку они не требуют дополнительных скриптов, CSS-анимация вряд ли замедлит ваши страницы.
Для создания CSS-анимации вам понадобятся три вещи: элемент HTML для анимации, правило CSS, которое привязывает анимацию к этому элементу, и группа ключевых кадров, определяющая стили в начале и в конце анимации. Вы также можете добавить объявления для дальнейшей настройки вашей анимации, например скорости и задержки.
Для демонстрации приведем простой пример CSS-анимации:
См. Пример CSS-анимации пера Кристины Перриконе (@hubspot) на CodePen.
В этом примере — это элемент, который мы анимируем. Глядя на CSS, мы видим, что наши объявления анимации связаны с селектором div . Самым важным объявлением здесь является animation-name , который привязывает ключевой кадр my-animation к нашему элементу div . Ниже приведены несколько дополнительных объявлений, которые влияют на время и поведение анимации.
Сама анимация создается с помощью ключевого кадра, указанного правилом @keyframes .Ключевой кадр определяет начальное состояние анимации (внутри от {} ) и ее конечное состояние (от до {} ). Ключевой кадр my-animation изменяет три свойства стиля нашего div: background-color , width и top . Когда эти три свойства анимируются одновременно, получается связная анимация.
В нашем примере у нас только один ключевой кадр. Документы с несколькими типами анимации могут иметь несколько ключевых кадров, каждый из которых привязан к разному элементу.
Примеры анимации CSS
Ниже мы собрали 24 примера CSS-анимации, начиная от базовых эффектов взаимодействия и заканчивая настоящими произведениями искусства (по крайней мере, на мой взгляд). Не стесняйтесь использовать их для вдохновения в своих проектах.
1. CSS Эффект перехода при наведении курсора мыши
Начиная с света, эта анимация показывает простой, но эффективный эффект выделения текста, запускаемый при наведении курсора мыши. Это отличный способ добавить изюминку ссылкам на ваших страницах.
См. Эффект перехода от мыши при выводе курсора CSS от Адама Аргайла (@argyleink) на CodePen.
Посмотреть код можно здесь.
2. Простые загрузочные блесны
CSS-анимации можно использовать для создания эффектов, которые всем нам знакомы — эти вращающиеся значки загрузки являются одним из таких примеров. Их значение понимают почти все, и они также не разбираются в коде. В этом конкретном примере также показано, как добиться аналогичного эффекта с помощью масштабируемой векторной графики.
См. Pen Simple HTML & SVG Loading Spinners Стивена Делани (@sdelaney) на CodePen.
Посмотреть код можно здесь.
3. Анимация прокрутки текста
Еще один отличный способ улучшить ваш текст, этот фрагмент кода применяет эффект, похожий на игровой автомат, который вращает слова в поле зрения и из поля зрения. Это распространенный метод на веб-сайтах, которые должны демонстрировать универсальность своих творений. Является ли ваш продукт эффективным, удобным и экологичным? Вставьте эти слова в анимацию, подобную этой.
См. Анимацию Pen Text от Йоанна (@yoannhel) на CodePen.
Посмотреть код можно здесь.
4. Анимированная кнопка отправки
Пользователи ценят небольшие неожиданные моменты восхищения, которые сообразительные дизайнеры любят разбрасывать на своих веб-страницах. Эта кнопка отправки представляет собой простой и приятный способ предоставить визуальную обратную связь, указывающую, что действие было завершено, например, отправка формы.
См. Чистую CSS-анимацию кнопки отправки пера от Dead Pixel (@dead_pixel) на CodePen.
Посмотреть код можно здесь.
5.Адаптивный логотип
Обратите внимание на логотип в правом нижнем углу пера ниже — эта анимация накладывает легкую анимацию при наведении курсора мыши. Это еще одна визуальная подсказка для пользователей, которая делает навигацию по вашему сайту более приятной.
См. Шаблон пера: логотип Алекса Каца (@katzkode) на CodePen.
Посмотреть код можно здесь.
6. Открывающий конверт
Один из моих любимых примеров, эта элегантная анимация уделяет пристальное внимание деталям. От движения вниз при открытии конверта до деталей на бумаге и тени под ним становится ясно, как небольшие штрихи складываются в одну плавную, связную анимацию.Из этого получится отличная анимация кнопки или прокрутки.
См. Кнопку Mail с анимацией пером на CSS от Джейка Джайлса-Филлипса (@jakegilesphillips) на CodePen.
Посмотреть код можно здесь.
7. Горячий кофе
Приведенный ниже фрагмент демонстрирует, как простая анимация может продолжаться. В этом случае применение CSS-анимации к переводу, масштабированию и исчезновению непрозрачности добавляет жизни обычному рисунку.
См. Pen Hot Coffee Зейна Уэсли (@zanewesley) на CodePen.
Посмотреть код можно здесь.
8. Кофеварка
Мы любим наш кофе, так что вот еще один. В этом случае анимация не отвлекает внимание. Скорее, он дополняется тщательным дизайном вокруг него, чтобы сделать весь элемент более захватывающим.
См. Анимацию Pen Coffee Machine на чистом CSS от Энрике Родригеса (@hjdesigner) на CodePen.
Посмотреть код можно здесь.
9. Покачивание кнопки
Нужно привлечь пользователя к определенному действию? Вместо цветной вспышки или модального окна рассмотрите возможность добавления к кнопке необычного эффекта покачивания.Это дружелюбный, но эффективный способ привлечь внимание, не показавшись навязчивым и не нарушая поток посетителей.
Посмотрите, как покачивается кнопка «Сохранить пером» Донована Хатчинсона (@donovanh) на CodePen.
Посмотреть код можно здесь.
10. Pacman
Я не рекомендую размещать это на вашем сайте из-за риска нарушения авторских прав, но в любом случае на него интересно смотреть.
См. Pen Pacman Риккардо (@Ferie) на CodePen.
Посмотреть код можно здесь.
11. Загрузка трех точек
Еще один пример CSS-анимации, создающей эффект загрузки, с которым многие из нас знакомы. Достаточно простого изменения масштаба, чтобы сказать: «Подождите, пожалуйста».
См. Загрузчик CSS Pen с точками от Алексея Петерсона (@petersonby) на CodePen.
Посмотреть код можно здесь.
12. Ящики для файлов
Чтобы оживить ваше меню, подумайте о чем-то вроде ящиков файлов на чистом CSS ниже. Его шкафы слегка открываются при наведении курсора мыши, помогая вашей основной системе навигации выделяться среди других.
См. Ящики Pen Pure CSS ʕ ノ • ᴥ • ʔ ノ ︵ ┻━┻ от Jhey (@ jh4y) на CodePen.
Посмотреть код можно здесь.
13. Цветной веер
Этот следующий пример особенно хорошо работает для бизнес-сайтов, ориентированных на дизайн — попробуйте анимировать цветовые палитры, чтобы создать эффект разветвления, и измените положение вещей с обычных цветных квадратов.
См. Цветовую палитру пера с анимацией на чистом CSS от Нитиша Хагвала (@nitishkmrk) на CodePen.
Посмотреть код можно здесь.
14.Тумблер 3D
Переключатель включения / выключения — один из основных элементов дизайна пользовательского интерфейса. В этом примере концепция демонстрирует трехмерное вращение с плавной анимацией переключения состояния. Здесь разработчик изменил элемент ввода флажка CSS во что-то гораздо более интересное.
См. Тумблер пера с отверстием для ручки от Джона Кантнера (@jkantner) на CodePen.
Посмотреть код можно здесь.
15. Подводная лодка
CSS хорошо подходит для плоских красочных иллюстраций и анимации.Приведенный ниже код сочетает в себе несколько эффектов для рисования — откровенно говоря — очаровательной подводной лодки. Единственное изменение, которое я бы предложил, — сделать его желтым.
См. Pen Submarine с CSS от Альберто Хереса (@ajerez) на CodePen.
Посмотреть код можно здесь.
16. Анимированный текст заголовка при наведении курсора
В примере «Эффект наведения курсора для заголовков» Оливии Нг исследуется несколько способов придать динамичности тексту заголовка. Он показывает, как всего пара ключевых кадров может поднять ваши заголовки.
См. Эффект наведения пера для заголовков, автор Оливия Нг (@oliviale) на CodePen.
Посмотреть код можно здесь.
17. Плавающее изображение
«Плавающий» эффект — это тонкое, простое и эффективное использование анимации CSS. В данном случае он используется для отображения значка с отличными результатами.
См. Плавающую анимацию пера — CSS Марио Дуарте (@MarioDesigns) на CodePen.
Посмотреть код можно здесь.
18. Астронавт
Вот еще одно умное использование эффекта парения в паре с дружественной иллюстрацией из неземного мира.Еще один пример тонкого эффекта анимации CSS для улучшения восприятия элемента страницы.
См. Pen Pure Css Astronaut, анимированный художником-программистом (@ Coding-Artist) на CodePen.
Посмотреть код можно здесь.
19. Минимальный кот
В этом примере разумно используется отрицательное пространство в сочетании с некоторыми своевременными анимациями CSS. Это простой дизайн, который передает много индивидуальности только с помощью свойства CSS transform.
См. Анимацию кошки Pen Pure CSS от Йохана Моучета (@johanmouchet) на CodePen.
Посмотреть код можно здесь.
20. Растущие / усадочные стержни
CSS можно использовать для анимации визуализаций и более эффективной передачи результатов. Этот пример демонстрирует, как цвета и скорость могут создавать различные ощущения для динамических гистограмм — анимация CSS позволяет вам изменять скорость и количество повторений в ваших анимациях.
Смотрите игру с логотипом ручки Дэна Педдла (@dazld) на CodePen.
Посмотреть код можно здесь.
21. Laser Tag
Признаюсь, это один из наиболее сложных примеров.Тем не менее, это делает уникальный и увлекательный дисплей загрузки, который удерживает внимание на короткое время.
См. Pen The Glowing Loader — Pure CSS Animation от Максима Россиньоля (@Maxoor) на CodePen.
Посмотреть код можно здесь.
22. Свечи
Вот блестящий пример того, как CSS-анимация может рассказать историю, пусть и короткую. Скорее всего, вам понадобится много практики, чтобы сделать что-то подобное, но это обязательно запомнится тем, кто посещает ваш сайт впервые.
См. Анимацию на CSS «Смешная свеча» в чистом виде от Кевина Дэвида (@kevin_David_k) на CodePen.
Посмотреть код можно здесь.
23. Скоростной грузовик
«Speedy Truck» Криса Джонсона умело использует параллакс для имитации движения грузовика в естественной обстановке. Несмотря на то, что эта ручка минималистична, эта ручка компенсирует это несколькими творческими применениями свойства transform — есть даже небольшая неровность на дороге.
См. Грузовик Pen Speedy от Криса Джонсона (@ChrisJohnson) на CodePen.
Посмотреть код можно здесь.
24. Снежный шар
Самый уютный пример, который мы смогли найти, — эта анимация снежного шара добавит вашей странице атмосферы, которую вы не получите с неподвижным изображением. Обратите внимание, как снег оживает только в пределах «стеклянного» шара.
См. «Рождественский снежный шар» с помощью пера, созданный художником-программистом (@ Coding-Artist) на CodePen.
Посмотреть код можно здесь.
Последний пример
Как мы видели, простое прикосновение к CSS-анимации может иметь очень большое значение для создания более захватывающих впечатлений для ваших посетителей.Лучшие анимации служат вашему контенту и впечатлениям, не отвлекая и не выглядя бесполезными — все вышеперечисленные примеры замечательно подходят для этого баланса.
Однако мы не смогли удержаться и добавить еще один пример, который поразил нас. Этот пример «Сторожевой башни», вероятно, выходит за рамки данной статьи по своей сложности, но он также является свидетельством того, на что способны только CSS и HTML.
См. Анимацию на чистом CSS Pen Watch Tower от Трэвиса Даути (@tdoughty) на CodePen.
Чтобы увидеть больше таких замечательных виньеток, как эта, загляните в профиль автора на CodePen и начните придумывать идеи для себя.
Анимация ширины и высоты CSS без эффекта сжатия • PQINA
Возможность анимировать свойства CSS width
и height
было бы очень полезно. К сожалению, на данный момент это верный способ заставить ваш браузер кричать от боли. В этом 5-минутном руководстве мы рассмотрим использование свойства transform
для имитации анимации ширины элемента.
Не анимируйте свойства ширины и высоты
Браузерам не нравится, когда им приходится вычислять позиции и размеры элементов на веб-странице. Большинство элементов каким-то образом влияют на рендеринг других элементов, они перемещают братьев и сестер в другую позицию, или, когда их размер изменяется, родительский элемент также изменяет размер. Поэтому изменение размеров одного элемента может иметь множество непредвиденных последствий.
Изменение ширины
и / или высоты
элемента запустит браузер, чтобы определить, какие другие элементы (дочерние элементы, братья и сестры или родители) затронуты изменением и как эти элементы должны быть обновлены.Этот процесс называется переформатированием, за ним следует перерисовка.
Эти операции очень нагружают процессор, поэтому, чтобы веб-сайт оставался быстрым, мы должны по возможности избегать их запуска.
Использование преобразований вместо
Чтобы запустить эффективную анимацию, нам нужно использовать свойства CSS transform
или , opacity
. В этой статье мы сосредоточимся на преобразовании
Свойство transform дает указание графическому процессору выполнить последние обновления текстуры элемента перед его отображением на экране.Эти обновления могут, например, включать вращение, перемещение и масштабирование элемента.
Вы можете сравнить текстуру графического процессора элемента с изображением, которое вы сделали с помощью своего мобильного телефона. Это изображение состоит только из пикселей, вся остальная информация об элементе отсутствует.
Графический процессор должен иметь дело только с пикселями, которые представляют элемент. Поскольку графические процессоры очень хорошо справляются с пикселями, операции преобразования и
выполняются очень быстро.
У этого есть и обратная сторона.Мы можем управлять только пикселями, но не содержимым элемента. Помните, что у нас есть только изображение элемента, вся остальная информация отсутствует.
Ниже показано, как эта разница влияет на свойство border-radius
. В примере преобразования
радиус не перерисовывается (как в примере width
), он просто масштабируется. Для перерисовки потребуется перерисовка, графический процессор не может этого сделать, он работает только с пикселями.
.square {
ширина: 200 пикселей;
высота: 200 пикселей;
радиус границы: 40 пикселей;
}
.square-resized {
ширина: 100 пикселей;
}
.square-transformed {
преобразовать: scaleX (0,5);
}
Анимация свойства преобразования в миллион раз быстрее, чем анимация
ширины
, высоты
или любых других свойств, которые влияют на макет и вызывают перекомпоновку
Но если мы его оживим, получится та странно растянутая форма. Это может быть быстро, но выглядит не лучшим образом. Это всегда напоминает мне об этих пришельцах в Duke Nukem 3D, которых раздавила дверь.
9-сегментное масштабирование на помощь
До border-radius
было тем, что нам нужно было создать изображение для каждого угла и / или края элемента, чтобы «подделать» радиус границы. В зависимости от дизайна это может дать до 8 изображений для одного элемента. Эти изображения будут расположены следующим образом:
Это называется методом 9-сегментного масштабирования. Этот метод позволяет масштабировать элемент и растягивать изображения 2, 4, 6 и 8, связывая 1, 3, 7 и 9 с их соответствующими углами, используя абсолютное позиционирование.
Теперь наши углы не растягиваются при масштабировании, см. Ниже:
К счастью, мы живем в эпоху, когда браузеры поддерживают border-radius
, и нам больше не нужно полагаться на эту технику для рисования закругленных углов.
Однако мы можем использовать эту технику для изменения размера элементов с помощью свойства transform
. Для краткости в этом примере рассматривается только масштабирование ширины элемента.
Начнем с такой структуры:
Давайте применим это к нашему квадрату.Нам понадобится один контейнер и три дочерних элемента для представления левой (1), центральной (2) и правой (3) частей квадрата.
Давайте посмотрим на CSS
.квадратный {
положение: относительное;
высота: 100 пикселей;
}
.оставил,
.центр,
.верно {
позиция: абсолютная;
верх: 0;
внизу: 0;
}
.оставил {
фон: красный;
}
.center {
фон: желтый;
}
.верно {
фон: синий;
}
.оставил,
.верно {
ширина: 20 пикселей;
}
.оставил {
радиус границы: 20 пикселей 0 0 20 пикселей;
}
.верно {
радиус границы: 0 20 пикселей 20 пикселей 0;
}
.center {
слева: 20 пикселей;
ширина: 1 пиксель;
преобразовать: scaleX (60);
трансформация происхождения: слева;
}
.верно {
преобразовать: translateX (80 пикселей);
}
В результате получился красиво окрашенный квадрат.
Я раскрасил части элементов, чтобы сделать их индивидуально узнаваемыми.
Теперь для нашего следующего трюка мы можем анимировать .center
и .справа
элементов квадрата.
.center {
анимация: анимация по центру 1 с, замедление бесконечного чередования;
}
.верно {
анимация: анимация вправо, 1 с, замедление, бесконечное чередование;
}
@keyframes right-animate {
0% {
преобразовать: translateX (140 пикселей);
}
100% {
преобразовать: translateX (20 пикселей);
}
}
@keyframes center-animate {
0% {
преобразовать: scaleX (120);
}
100% {
преобразовать: scaleX (0);
}
}
Мне нравится, давайте вернем цвет фона к черному.
Если вы используете Firefox, это должно выглядеть великолепно. Если вы используете Safari или Chrome, вы можете заметить небольшое мерцание между центральной и правой частями.
Не понимаю, почему это происходит. Это может быть проблема с альфа-смешиванием ИЛИ округлением пикселей. В любом случае. Слегка перекрывая центральный элемент с правильным элементом, мы можем решить эту проблему рендеринга. Убедитесь, что элемент имеет ширину не менее 1
пикселей и масштабируется до 121
пикселей.
@keyframes center-animate {
0% {
преобразовать: scaleX (121);
}
100% {
преобразовать: scaleX (1);
}
}
Хурай! У нас получился анимированный не мягкий квадрат!
Мы могли бы пойти дальше и сделать его более гибким, переместив анимацию в JavaScript, создав веб-компонент или используя переменные CSS, но для целей этой статьи этого примера должно хватить.
Посмотреть демонстрацию конечного результата на CodePen
Хотите, чтобы вас всегда знали?
Подпишитесь ниже, чтобы быть в курсе новых статей и выпусков продуктов PQINA, таких как FilePond и Doka Image Editor
Держи лошадей
Прежде чем вы начнете использовать эту технику повсюду, обратите внимание, что:
- Мы все еще масштабируем центральный квадрат по оси X, поэтому фоновые изображения, примененные к квадрату, будут растянуты.
- Можно сделать
box-shadow
, но это немного сложно. - Квадрат не может отрезать другие элементы, например,
переполнение: скрыто
не сработает.
Тем не менее, с небольшой хитростью вы можете использовать это для создания потрясающих эффектов. Элементы файлов и область перетаскивания библиотеки загрузки файлов FilePond используют эту технику для плавной анимации их высоты.
Doka Image Editor использовал эту технику для осей x и y для рендеринга и анимации белого прямоугольника обрезки поверх изображения. С тех пор он был частично заменен на WebGL.
Заключение
Свойства CSS по умолчанию width
и height
(вместе с большинством других свойств) не подходят для анимации. Они слишком сильно влияют на производительность рендеринга, потому что их обновление заставляет браузер переоценивать положение и размеры связанных элементов.
Если вместо этого мы используем свойство transform
, мы можем анимировать наш квадрат на графическом процессоре. Хотя это очень быстро, это также вводит некоторые ограничения, потому что графический процессор работает только с пикселями.
Применяя технику 9-срезов, мы можем обойти некоторые из этих ограничений и создать элемент, который мы можем анимировать эффективным способом.
Я использую Twitter, чтобы делиться новыми советами и приемами веб-разработки, так что подпишитесь на меня, если вам это интересно и вы хотите узнать больше.
Animate SVG with CSS - LogRocket Blog
Примечание редактора: эта статья была обновлена 22.01.2021.
Веб-анимация - это восторг.Они улучшают взаимодействие с пользователем, поскольку могут обеспечивать визуальную обратную связь, направлять задачи и оживлять веб-сайт. Есть несколько способов создания веб-анимации, включая библиотеки JavaScript, GIF и встроенные видео.
Можете ли вы использовать CSS для анимации SVG?
Но простая комбинация SVG и CSS привлекательна по нескольким причинам. Состоящие из кода вместо тысяч кадров растровых изображений, они эффективны и быстрее загружаются, чем громоздкие GIF-файлы и видео. Кроме того, существует множество простых анимаций, которые можно создать без необходимости добавлять еще один плагин JavaScript к загрузке страницы вашего веб-сайта.
Для загрузки, SVG-файлы основаны на векторах, поэтому они безупречно масштабируются по размеру экрана и уровням масштабирования, не создавая резкой пикселизации.
Зачем использовать CSS для анимации SVG?
Теперь вы можете спросить: почему именно CSS? Почему бы не анимировать с помощью SMIL, стандартной спецификации SVG-анимации? Как оказалось, поддержка СМИЛ снижается. Chrome движется в направлении отказа от SMIL в пользу анимации CSS и API веб-анимации.
Итак, приступим к CSS-анимациям ... Но как они создаются? В этой статье мы узнаем, как создавать эти легкие масштабируемые анимации!
видео Пола Райана
Общие варианты использования анимации SVG с помощью CSS
Во-первых, давайте рассмотрим несколько практических примеров того, почему вам могут понадобиться анимированные SVG-файлы в веб-приложении или на целевой странице.
ИконкиАнимированные SVG-файлы отлично подходят для значков, которые указывают на микровзаимодействия и изменения состояния. Они также полезны, когда направляют пользователя к следующему действию, например, в ознакомительном туре. Общие варианты использования включают загрузку, выгрузку, переключение меню и воспроизведение / приостановку видео.
ИллюстрацииИллюстрации - еще один распространенный вариант использования. Их можно включить в продукт как пустое состояние, чтобы продемонстрировать, что делать, чтобы сгенерировать данные на информационной панели.Еще одним популярным вариантом использования являются анимированные смайлы и стикеры. Есть также анимированные иллюстрации, которые украшают целевые страницы, привносят объемность и веселье при построении бренда.
Как подготовить SVG к анимации
А теперь перейдем к самому мелкому. Первое, что вам нужно сделать, это подготовить SVG. Может показаться неприятным начинать чистку, когда вы готовы запутаться и превратиться в сумасшедшего ученого-аниматора, но будет проще начать с упрощенного кода SVG.
Упростите код SVGКогда создается SVG, он содержит дополнительный код, который часто не нужен. Поэтому очень важно его оптимизировать. Мне нравится использовать SVGO, который уменьшает размер файла и сохраняет пути с уникальными идентификаторами (это важно для предотвращения проблем с несколькими SVG на одной странице). Это инструмент Node.js, и есть несколько способов его использования, включая плагин Sketch: SVGO Compressor.
Создание преднамеренных группировок (при необходимости) Откройте SVG в редакторе кода и обратите внимание на элементы
.Они используются для группировки элементов SVG. Если вы хотите анимировать группу элементов вместе, оберните их в
и назовите их классом или идентификатором.
Рассмотрите возможность преобразования имен идентификаторов в имена классов, если вы планируете одинаково стилизовать более одного пути (идентификаторы можно использовать только один раз). Если у вас есть идентификатор или класс на фигуре, вы сможете настроить таргетинг на них с помощью CSS. Когда вы сохраните SVG, никаких видимых изменений пока не будет.
Остерегайтесь порядка наложения (если вы будете анимировать фигуру, которая идет позади другой фигуры)Это кажется нелогичным, но фигуры, перечисленные последними, будут вставлены поверх вышеупомянутых фигур.Итак, если вы хотите, чтобы фигура отображалась на заднем плане, убедитесь, что она указана в верхней части кода SVG. Фигуры SVG «раскрашиваются» сверху вниз.
Установить предпочтительное начальное состояние стиля SVG SVG имеют атрибуты представления, похожие на стили CSS, но устанавливаемые непосредственно в SVG. Типичный пример - заливка цветом
. Поскольку эти стили установлены в SVG, вы можете предположить, что они имеют большой вес для браузера. Как оказалось, любой CSS / Sass, который вы установили извне, естественным образом переопределит стиль SVG без необходимости в объявлении ! Important
.
Однако вы должны помнить о том, что установлено в SVG, чтобы вы могли подготовиться к тому, что будет показано во время загрузки страницы. Для страницы с медленной загрузкой вы можете увидеть вспышку SVG перед стилизацией с помощью CSS.
Я рекомендую оставить ширину и высоту, чтобы избежать нестилизованной вспышки SVG во время загрузки страницы (Сара Суейдан хорошо объясняет здесь Flash of Unstyled SVG (FOUSVG)).
Применение CSS к SVG
Теперь, когда у вас есть опрятный SVG, давайте поговорим о том, как добавить CSS.Когда дело доходит до применения CSS к SVG, следует учитывать несколько факторов. Ограничением является то, что вы не можете использовать внешнюю таблицу стилей для применения стиля к SVG, имеющему внешнюю ссылку.
Вариант 1. Встроить код SVG в HTML (мой любимый)Это делает элемент SVG и его содержимое частью дерева DOM документа, поэтому на них влияет CSS документа. Это мой любимый вариант, потому что он хранит стили отдельно от разметки.
Вы увидите, что остальные варианты ниже сильно переплетены.Если вы используете Rails, есть драгоценные камни, которые могут автоматически встраивать SVG в представления. Итак, в своем коде вы можете просто сослаться на внешний SVG, тогда он будет встроен при компиляции. Дополнительным преимуществом этого метода является то, что встраивание SVG означает, что на один HTTP-запрос меньше. Ура, спектакль!
См. Pen
SVG - 1 Люка Тубиниса (@lukelogrocket)
на CodePen.
Вариант 2. Включите CSS в SVG в тег
Вы можете добавить стили CSS в тег ,вложенный в тег
.
См. Pen
SVG - 2 Люка Тубиниса (@lukelogrocket)
на CodePen.
Если вы хотите сохранить ссылку на стиль в SVG,но не включать его в SVG,вы можете использовать тег Xml-stylesheet>
для ссылки на внешнюю таблицу стилей из SVG.
См. Pen
SVG - 3 Люка Тубиниса (@lukelogrocket)
на CodePen.
CSS также может быть установлен для элемента с использованием встроенных атрибутов стиля.
См. Pen
SVG - 4 Люка Тубиниса (@lukelogrocket)
на CodePen.
Что можно анимировать с помощью CSS?
Вообще-то много чего! Свойства CSS со значениями,которые могут изменяться с течением времени,можно анимировать с помощью анимации CSS или переходов CSS (полный список этих свойств см. В списке свойств CSS для анимации в MDN Web Doc). Вот несколько демонстраций,которые вдохновят вас.
Демонстрации анимации
Мы рассмотрим два основных типа анимации,которые различаются в зависимости от степени контроля,которую они предоставляют.Примечание :я буду использовать Sass в демонстрациях,но,конечно,он работает так же и для CSS. Кроме того,для простоты я опускаю префиксы,хотя они вам понадобятся в производстве (подробнее об этом позже).
Переходная собственность
Для анимаций,запускаемых при загрузке или изменении состояния,например при наведении курсора или щелчке мышью,можно использовать свойство перехода. Свойство перехода позволяет значениям свойств плавно изменяться в течение заданного периода времени. Без него изменение произошло бы мгновенно,создавая резкий вид.
Переходная собственностьпереход:задержка функции времени длительности свойства;
Значение | Описание |
---|---|
переход | Сокращенное свойство для одновременной установки всех четырех |
задержка перехода | Задержка (в секундах) для эффекта перехода |
продолжительность перехода | Количество секунд или миллисекунд,которое требуется для выполнения эффекта перехода |
переходная собственность | Задает имя свойства CSS,для которого применяется эффект перехода. |
функция времени перехода | Кривая скорости эффекта перехода |
См. Pen
SVG Donut,анимированный при наведении с помощью CSS/Sass от Хоуп Армстронг (@hopearmstrong)
на CodePen.
Этот психоделический пончик имеет меняющую цвет глазурь,которая стала возможной благодаря свойству transition
! Переход в элементе # donut-icing
указывает заливке постепенно изменяться в течение трех секунд с использованием функции синхронизации easy-out
. При наведении курсора заливка становится синей. Посередине происходит холодное смешивание цветов,позволяющее добавить немного пурпурного оттенка.
Свойство анимации
Ограничение свойства transition
заключается в том,что оно не дает особого контроля над изменениями,происходящими на временной шкале.Лучше для более простых анимаций,которые просто идут от точки А к точке Б. Для дальнейшего управления используйте свойство анимации. Свойства можно использовать по отдельности,но я продемонстрирую сокращение animation
.
анимация:имя длительность функция синхронизации задержка направление подсчета итераций состояние воспроизведения режима заполнения;
Значение | Описание |
имя-анимации | Это имя ключевого кадра,который вы хотите привязать к селектору.Следите за этим,когда будете читать раздел о ключевых кадрах ниже. |
продолжительность анимации | Продолжительность анимации в секундах или миллисекундах. Примечание. Всегда указывайте свойство длительности анимации. В противном случае длительность равна 0 и никогда не будет воспроизведена. |
функция синхронизации анимации | Кривая скорости анимации. Например:линейный,легкость,легкость входа,легкость выхода,легкость выхода,начало шага,конец шага,шаги (int,начало | конец),кубическая кривая Безье (n,n,n,n),начальная,наследуемая |
задержка анимации | Определяется в секундах (с) или миллисекундах (мс),это продолжительность задержки перед запуском анимации.Примечание. Если задано отрицательное значение,воспроизведение начнется так,как если бы оно продолжалось определенное время. |
количество итераций анимации | Количество раз,когда должна быть воспроизведена анимация. Например:любое числовое число |
анимация-направление | Воспроизвести анимацию в обратном или попеременном порядке. Например:нормальный,обратный,альтернативный,альтернативно-обратный,начальный,наследование |
режим заливки анимации | Указывает,какие значения применяются анимацией вне времени ее выполнения. |
состояние воспроизведения анимации | Указывает,запущена или приостановлена анимация |
начальный | значение по умолчанию |
наследовать | унаследован от родительского элемента |
Это то,что действительно становится захватывающим,и это то,что отличает анимацию от свойства перехода с точки зрения управления временем.Используйте at-правило @keyframes
,чтобы указать ему,как изменить на промежуточных этапах.
Чтобы использовать ключевые кадры,добавьте at-правило @keyframes
с именем,которое соответствует желаемому свойству имя-анимации
. Используйте селекторы ключевых кадров,чтобы указать процентное значение на временной шкале анимации,где должно произойти изменение.
Вот пример,показывающий процентные селекторы:
@keyframes имя-идет-здесь 0% ширина:100 пикселей 25% ширина:120 пикселей 50%,75% ширина:130 пикселей 100% ширина:110px
Если вы хотите создать ключевые кадры только для начала и конца,вы можете сделать это следующим образом:
@keyframes имя-идет-здесь из ширина:100 пикселей к ширина:120px
Хотя ключевые кадры,скорее всего,будут запускаться в любом месте таблицы стилей,они обычно размещаются под свойством анимации,где на них можно легко ссылаться.
Преобразовывает
Элементы можно анимировать в 2-х или 3-х мерном пространстве. Здесь я покажу несколько примеров 2D-преобразований. Чтобы узнать больше о трехмерных преобразованиях,ознакомьтесь с руководством по трехмерным преобразованиям от The noob.
ВращающийсяСм. Pen
Значок SVG с вращающимся прядильщиком,анимированный с помощью CSS/Sass от Хоуп Армстронг (@hopearmstrong)
на CodePen.
Вот вращающийся значок загрузки,который использует преобразование поворота.Хотите знать,как это сделано? Он начинается с этого базового SVG,который выглядит как кольцо с затемненным квадрантом.
HTMLСм. Pen
SVG - 5 Люка Тубиниса (@lukelogrocket)
на CodePen.
В Sass для SVG используется идентификатор SVG. Затем определяются анимация и переход. Анимация ссылается на имя @keyframes
,где преобразование :поворот
настроен на изменение от 0 градусов до 360 градусов (полный поворот).Это все,что нужно,чтобы оживить этот спиннер!
#loading анимация:загрузка-прядильщик 1 с линейный бесконечный@keyframes загрузка-счетчик из преобразовать:повернуть (0 градусов) к преобразовать:повернуть (360 градусов)
Хотите чего-нибудь более гладкого? SVG поддерживают градиенты,поэтому вы можете добиться более плавного эффекта,используя тот же Sass,но с SVG,в котором градиент применен к кольцу (см. Его определение как # spinner-gradient-a
ниже).
См. Pen
Вращающийся значок загрузки SVG с градиентом и анимацией CSS/Sass от Хоуп Армстронг (@hopearmstrong)
на CodePen.
Теперь давайте поиграемся с transform:scale
,чтобы создать этот значок загрузки панели преобразования.
См. Pen
:панели загрузки SVG,анимированные с помощью CSS/Sass,автор - Хоуп Армстронг (@hopearmstrong)
на CodePen.
SVG состоит из трех прямоугольников одинакового размера,равномерно разнесенных. Идентификаторы были добавлены для каждого элемента - для SVG и всех трех
s,чтобы их можно было легко нацелить с помощью Sass.
См. Pen
SVG - 6 Люка Тубиниса (@lukelogrocket)
на CodePen.
Sass применяет анимацию к каждой панели. Ключевые кадры сообщают полосам об изменении масштаба по оси Y в четырех местах временной шкалы - в начале,на четверти пути,на полпути и затем на трех четвертях пути. Первое число в анимации обозначает анимацию length,а второй устанавливает задержку. Поскольку я хочу,чтобы эти полосы менялись по размеру в разное время,я добавил разные задержки для каждой.
# loading-bar &-оставил анимация:loading-bar-morph 1s linear.1 с бесконечное трансформация происхождения:центр &-середина анимация:загрузка-бар-морфинг 1 с линейный. 2 с бесконечный трансформация происхождения:центр &-верно анимация:загрузка-бар-морфинг 1 сек. линейная. 4 сек. бесконечная трансформация происхождения:центр@keyframes загрузка-бар-морфинг 0% преобразовать:scaleY (1) 25% преобразовать:scaleY (0,3) 50% преобразовать:scaleY (0,7) 75% преобразовать:scaleY (0,15)
трансформация происхождения:центр
Обратите внимание,что transform-origin:center
сообщает преобразованию масштабирование от центра полосы;в противном случае он будет масштабироваться сверху вниз и будет выглядеть так,как если бы стержни сверлили землю.Проверьте это,и вы поймете,о чем я. Это важный урок:по умолчанию SVG располагается в точке (0,0) в верхнем левом углу. Это ключевое отличие,если вы привыкли работать с элементами HTML,для которых значение по умолчанию transform-origin всегда равно (50%,50%).
Причудливые техники
Анимация рисования линии
См. Pen
Line Drawing Animation (SVG и CSS/Sass) Хоуп Армстронг (@hopearmstrong)
на CodePen.
Этот изящный эффект заставляет ваш SVG выглядеть так,как если бы он был нарисован.Для этого требуется SVG с линиями,поскольку он основан на штрихах. Я расскажу вам,как это делается для одной строки,а потом вы узнаете,как сделать все остальное.
Сначала нанесите штриховую линию на линии,используя stroke-dasharray
. Число представляет длину штриха в пикселях. Вы хотите,чтобы это была длина линии.
#line инсульт-дашаррай:497
Затем добавьте stroke-dashoffset
,чтобы переместить черточку вдоль линии. Сделайте ее такой же длинной,как и сама линия,чтобы она выглядела как сплошная линия.Так будет выглядеть финальный кадр анимации.
#line инсульт-дашаррай:497 смещение:497
Теперь он готов к анимации. Добавьте ключевые кадры,которые анимируют stroke-dashoffset
,чтобы он перешел от полного смещения (обводка не видна) до смещения 0 пикселей (сплошная обводка). Обратите внимание на форварды в свойстве анимации. Это animation-fill-mode
,который сообщает анимации оставаться в ее конечном конечном состоянии после воспроизведения. Без него анимация будет воспроизводиться,а затем вернется к своему первому «кадру» в качестве последней точки покоя.
#line инсульт-дашаррай:497 смещение:497 анимация:нарисуйте 1400 мс с легкостью на 4 мс вперед@keyframes рисовать из смещение:1000 к смещение:0Анимированная иллюстрация
Для этого приподнятого бьющегося сердца при наведении курсора срабатывает несколько анимаций. Масштаб сердца изменяется на 110%,глаза становятся меньше,рот становится больше,появляется румянец и сердце пульсирует. Для эффекта пульса я использовал анимацию сердцебиения Animista.Animista - отличный ресурс для готовых эффектов анимации CSS,которые вы можете повторно использовать и повторять.
См. Pen
Beating Heart SVG,анимированный при наведении курсора с помощью CSS/Sass от Хоуп Армстронг (@hopearmstrong)
на CodePen.
# смайлик-любовь # смайлик &-краснеть дисплей:нет а дисплей:встроенный блок &:навести # смайлик преобразовать:масштаб (1.1) трансформация происхождения:центр -webkit-animation:сердцебиение 1,5 с легкость выхода бесконечное оба анимация:сердцебиение 1.5s легкость в выходе бесконечная как &-краснеть дисплей:наследовать & -глаз-лево трансформация происхождения:центр преобразовать:масштаб (.7) перевести (-8 пикселей) & -глаз-право трансформация происхождения:центр преобразовать:масштаб (.7) перевести (8 пикселей) &-рот трансформация:translateY (-22px) scale (1.6) трансформация происхождения:центр/* ---------------------------------------------- * анимация сердцебиения * Создано Animista,24 марта 2019 г.,18:51:13 * ш:http://анимиста.net,t:@cssanimista * ---------------------------------------------- */сердцебиение@ -webkit-keyframes из -webkit-transform:масштаб (1) преобразование:масштаб (1) -webkit-transform-origin:центр центр transform-origin:center center -webkit-animation-time-function:легкость выхода анимация-тайминговая функция:замедление 10% -webkit-transform:масштаб (0,91) преобразование:масштаб (0,91) -webkit-animation-time-function:легкость в анимация-тайминговая функция:легкость в 17% -webkit-transform:масштаб (0.98) преобразование:масштаб (0,98) -webkit-animation-time-function:легкость выхода анимация-тайминговая функция:замедление 33% -webkit-transform:масштаб (0,87) преобразование:масштаб (0,87) -webkit-animation-time-function:легкость в анимация-тайминговая функция:легкость в 45% -webkit-transform:масштаб (1) преобразование:масштаб (1) -webkit-animation-time-function:легкость выхода анимация-тайминговая функция:замедление сердцебиение@keyframes из -webkit-transform:масштаб (1) преобразование:масштаб (1) -webkit-transform-origin:центр центр transform-origin:center center -webkit-animation-time-function:легкость выхода анимация-тайминговая функция:замедление 10% -webkit-transform:масштаб (0.91) преобразование:масштаб (0,91) -webkit-animation-time-function:легкость в анимация-тайминговая функция:легкость в 17% -webkit-transform:масштаб (0,98) преобразование:масштаб (0,98) -webkit-animation-time-function:легкость выхода анимация-тайминговая функция:замедление 33% -webkit-transform:масштаб (0,87) преобразование:масштаб (0,87) -webkit-animation-time-function:легкость в анимация-тайминговая функция:легкость в 45% -webkit-transform:масштаб (1) преобразование:масштаб (1) -webkit-animation-time-function:легкость выхода анимация-функция-тайминг:легкость выхода
Для этого эскимо я анимировал капли,изменив их положение с помощью преобразования :перевести
.Чтобы они исчезли,я анимировал непрозрачность . Похоже,сейчас жаркий летний день!
См. Pen
SVG «Таяние эскимо»,анимированный с помощью CSS/Sass,автор - Хоуп Армстронг (@hopearmstrong)
на CodePen.
Сделайте это самостоятельно,используя вышеупомянутый CSS/Sass,или воспользуйтесь ярлыком с помощью плагина,такого как Animate.CSS. Он содержит готовые к использованию служебные классы для распространенных анимаций,таких как затухание,слайды,встряхивание и многое другое.Если вы хотите изучить варианты JavaScript,я слышал много хорошего о GSAP от Greensock,в котором есть мощный плагин под названием MorphSVGPlugin,который позволяет преобразовывать фигуру SVG в другую.
Кроссбраузерность
Большая часть анимации CSS поддерживается очень хорошо даже во всех браузерах. Но есть еще несколько вещей,о которых нужно знать. Вот мои советы:
Префиксы браузераВы можете проверить shouldiprefix.com,чтобы подтвердить,нужно ли включать префиксы поставщиков для конкретных браузеров.На момент написания этой статьи рекомендуется использовать префиксы -webkit-animation
и @ -webkit-keyframes
.
Имейте в виду,что несмотря на широкую поддержку браузеров,вы можете столкнуться с некоторыми различиями в рендеринге. Например,если вы хотите поддерживать старые версии Firefox (v. 42 и ниже),обратите внимание на ошибку,связанную с transform-origin.
Хотя сейчас это исправлено,какое-то время Firefox не принимал никаких ключевых слов (например,center) или проценты в transform-origin. Итак,если вы столкнетесь с проблемой рендеринга,попробуйте вместо этого использовать пиксели.
Для вычисления центров можно посмотреть атрибуты cx
и cy
. Чтобы найти различия в рендеринге в разных браузерах и на разных устройствах,протестируйте свою анимацию в BrowserStack,чтобы найти странности. В Chrome DevTools есть вкладка «Анимация»,с помощью которой можно ближе познакомиться с состояниями анимации.
Он позволяет вам видеть временную шкалу визуализации анимации на странице,воспроизводить анимацию в замедленном режиме и изменять анимацию.
Заключение
Теперь,когда вы знаете несколько различных способов анимации SVG с помощью CSS,я надеюсь,что вы вдохновились на создание собственной анимации для Интернета! Приятно воплотить в жизнь статические SVG-файлы с помощью всего нескольких строк CSS. Когда вы освоите несколько трюков,вам будет легче справляться с более сложной анимацией. В Интернете и на таких сайтах,как CodePen,можно найти бесконечное количество вдохновения. Удачной анимации!
Ваш интерфейс загружает процессор ваших пользователей?
По мере того,как веб-интерфейсы становятся все более сложными,ресурсоемкие функции требуют все большего и большего от браузера.Если вы заинтересованы в мониторинге и отслеживании использования ЦП на стороне клиента,использования памяти и многого другого для всех ваших пользователей в производственной среде,попробуйте LogRocket. Https://logrocket.com/signup/LogRocket похож на DVR для веб-приложений,записывая все,что происходит в вашем веб-приложении или на сайте. Вместо того,чтобы гадать,почему возникают проблемы,вы можете агрегировать и составлять отчеты по ключевым показателям производительности внешнего интерфейса,воспроизводить пользовательские сеансы вместе с состоянием приложения,регистрировать сетевые запросы и автоматически обнаруживать все ошибки.
Модернизируйте отладку веб-приложений - начните мониторинг бесплатно.
Создавайте классные CSS-анимации с помощью animate.css
Если вы изучили основы HTML и CSS и хотите развлечься,создавая классные CSS-анимации,зайдите на сайт animate.css. Animate.css - одна из тысяч бесплатных библиотек кода ,доступных в Интернете,чтобы сделать вашу жизнь немного проще. Библиотеки кода (например,animate.css) - это в основном текстовые файлы,заполненные кодом,который кто-то уже написал,а затем решил поделиться с вами. В нашем случае файл с именем animate.css наполнен кодом CSS,который создает простые забавные анимации,которые вы можете использовать на своих веб-страницах.
КАК ПОЛЬЗОВАТЬСЯ ANIMATE.CSS
Сначала перейдите на https://daneden.github.io/animate.css/и загрузите файл animate.css. Пока вы там,поиграйте с различными анимациями,нажав кнопку «анимировать»!
Теперь поместите animate.css в папку на вашем компьютере. Если у вас уже есть проект HTML,с которым вы экспериментируете,вы можете добавить анимацию.css в эту папку;в противном случае создайте новую папку и поместите в нее файл animate.css.
Затем откройте файл animate.css в своем любимом текстовом редакторе. Если вы раньше не использовали специализированный редактор кода,ознакомьтесь с нашим руководством по началу работы с atom.io и вернитесь к этому руководству,когда Atom настроен на вашем компьютере.
Взгляните на код в animate.css. Это действительно очень просто и легко читать,если вы немного знакомы с CSS. Если вы хотите проверить свои навыки работы с CSS,дайте себе несколько минут,чтобы попробовать использовать анимацию.css для создания одной или двух анимаций. Или вы можете просто продолжить чтение этого руководства…
Создайте файл HTML в той же папке,что и animate.css. Вы можете называть его index.html,animationTest.html или как угодно еще,если оно заканчивается на .html. Вставьте базовый шаблон HTML (вы можете найти его в конце этого руководства),чтобы вы могли начать творить магию анимации.
В разделе
свяжите свой HTML-файл с файлом animate.css. Ваш код должен выглядеть примерно так:Теперь в разделе
создайте элемент HTML,который вы хотите анимировать. Давайте воспользуемся этим изображением,например:Сохраните HTML-файл,а затем дважды щелкните его (в папке),чтобы открыть его в браузере. Теперь вы должны увидеть пустую страницу с одним изображением.
Давайте быстро взглянем на код CSS,чтобы понять,как его использовать. Открыв файл,вы заметите,что первым определенным классом является.Animated,который,по сути,просто дает любому элементу HTML общий,базовый код CSS,который ему понадобится для анимации. Если вы посмотрите ниже в файле,вы увидите все виды анимации CSS,от .bounce до .pulse и .fadeOutRightBig. Это особые анимации,которые вы можете использовать по своему усмотрению. Итак,все,что вам нужно сделать,чтобы оживить скучное статичное изображение,- это добавить к нему пару классов! Каждое изображение (или другой элемент HTML),которое вы хотите анимировать,должно получить класс .animated.Затем вы можете выбрать любую анимацию (например,.pulse) и добавить этот класс к своему изображению.
Итак,давайте творим волшебство! Добавьте к своему изображению классы .animated и .pulse. Ваш код должен выглядеть примерно так:Теперь сохраните HTML-файл и перезагрузите его в своем браузере. Альт! Ваш образ пульсирует жизнью! Но это же скучно,правда? Он пульсировал только один раз,а затем снова превратился в обычное статичное изображение.Что ж,если мы добавим класс .infinite,изображение будет пульсировать вечно! Попробуй это сейчас;ваш код должен выглядеть примерно так:
Теперь,когда вы узнали,как использовать библиотеку animate.css для создания забавных CSS-анимаций за секунды,вам решать,как использовать ее на своих веб-страницах! Если вы знаете,как использовать JavaScript/jQuery,вы можете запускать эти анимации,когда захотите;когда зритель прокручивает изображение,когда мышь перемещается по изображению,когда зритель нажимает определенную клавишу и т. д.Вы даже можете запускать эту анимацию при событиях:hover с помощью базового CSS. Но это урок для другого раза.
А пока получайте удовольствие от создания CSS-анимации с помощью animate.css и удачного кодирования!
BASIC HTML BOILERPLATE
61 Примеры анимации CSS
Коллекция бесплатных примеров кода HTML и CSS-анимации .Обновление майской коллекции 2019 года. 22 новинки.
- Библиотеки анимации CSS
- Переходы между страницами CSS
Автор
- Шанс Сквайрс
О коде
Закройте жалюзи
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
CSS-анимации с SVG
Переходы и анимация в сочетании с SVG.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Юлия Миоцен
О коде
Глаз на чистом CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Stívali Serna
О коде
Колбаса Собака Анимация только CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
Рок-н-ролл Полумарафон Анимация
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
Letter CSS Анимация
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Брейдон Койер
О коде
Вечерние фонари
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Vian Esterhuizen
О коде
Проблема трех тел
На основе научно-фантастического романа Лю Цисинь «Проблема трех тел».
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- @keyframers
О коде
2020 SVG Анимация
Дэвид Хоршид и Стивен Шоу празднуют Новый год с помощью этой забавной анимации 2020 года,в которой используются нарисованные вручную контуры SVG,а также показано,как упростить анимацию stroke-dasharray/stroke-dashoffset
с pathLength=1
.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Абубакер Саид
О коде
Эффект раскрытия блоков CSS
Измените --td
(общая длительность),чтобы увеличить/уменьшить время эффекта.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Хисами Курита
О коде
Только CSS 3D Cube
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Аарон Икер
О коде
Пишущая машинка CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Юсуке Накая
О коде
Только CSS:Motion Blur
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Лассе Диркс
О коде
Анимация со смещением размытия движения
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Хисами Курита
О коде
Только CSS-анимация # 02
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Хисами Курита
О коде
Только анимация Css # 03
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- @keyframers
О коде
Пируэт из бумаги
3D анимация летающей страницы только с CSS.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Хисами Курита
О коде
Только CSS-анимация # 01
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Хаякава
О коде
Круг,превращающийся в квадрат
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
О коде
The Perpetual Mobile
Поворотное движение не связано напрямую с движением,поэтому нет очевидных повторов,и анимация более привлекательна.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Кайо Алмейда
О коде
Страница товара
Страница продукта с анимацией ключевых кадров CSS.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:font-awesome.css
О коде
Поддельный переменный шрифт с CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Андрей Шарапов
О коде
Анимация SVG
Некоторые SVG-анимация и ключевые кадры.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
Анимированный стикер
Анимированная наклейка в HTML и CSS.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Вангель Цо
О коде
Анимация рок-руки
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Екатерина Васильева
О коде
h3O - Анимация химической колбы
Химическая колбаSVG слегка анимирована с помощью CSS.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Ахил Сай Рам
О коде
Подводная анимация на чистом CSS
Совместимые браузеры:Chrome,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Ахил Сай Рам
О коде
Свечи (анимация на чистом CSS)
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Асвин Бехера
О коде
Кит и луна
Анимация кита и луны на чистом CSS.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Тони Бэник
О коде
Анимация кассеты CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Автор
- Энрике Родригес
О коде
Анимация для кофемашины
Кофеварка с чистой CSS-анимацией.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Арис Акоба
О коде
Анимация солнечного затмения
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
CSS Box Dog Animation
...
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
О коде
CSS Сцена маяка
Совместимые браузеры:Chrome,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
Бит и байты CSS-анимация
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Тамино Мартиниус
Сделано с
- HTML/CSS (PostCSS)/JavaScript (TypeScript)
О коде
Анимация в точечном меню
Четыре различных анимации меню для переключения кнопок меню между точками,крестиком и значком «назад».
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
О коде
Анимация цикла
Анимация прокрутки с увеличительным стеклом.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:font-awesome.css
Автор
- Юлия Музафарова
О коде
Анимация усатой няни на чистом CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
О коде
Справочник по анимации
Анимация загрузки справочника.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
О коде
Книги Анимация наведения
Хорошая анимация наведения для обложки книги.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Сделано с
- HTML (мопс)/CSS (SCSS)/JavaScript
О коде
Подключенная анимация
Простая подключенная анимация для модальных окон.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Ашиш Бардхан
О коде
Адаптивная и анимированная ветряная мельница
Windmill (Pug+SCSS) - отзывчивый и анимированный.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
О коде
Анимация маски CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
отзывчивый:да
Зависимости:-
Сделано с
- HTML (мопс)/CSS (SCSS)/JavaScript
О коде
CSS-анимация:время суток
Эксперимент с CSS-анимацией.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:simple-line-icons.css,jquery.js
Сделано с
- HTML (мопс)/CSS (SCSS)/JavaScript
О коде
CSS-анимация:в помещении или на улице?
Недавно был задействован в проекте,где мы должны были делать анимацию. Мы использовали для этого After Effects>JSON>магию плагина,но мне было интересно,могу ли я воспроизвести тот же эффект с помощью CSS.- Оливия
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:simple-line-icons.css,jquery.js
Автор
- Дэнни Джорис
О коде
Анимация границы только CSS
Граничная анимация только для CSS при наведении курсора. Для работы нужен прочный фон.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Джейми Колтер
О коде
Обруч Saturn Hula Hooping на чистом CSS
Titan часы обруч Saturn! Преобразование этого gif в чистый CSS:https://dribbble.com/shots/4252236-Saturn-Hula-Hooping
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Джерри Джонс
Сделано с
- HTML (Haml)/CSS (SCSS)/JavaScript (Babel)
О коде
Анимация привлечения внимания
Иногда вам нужно привлечь внимание к элементу на своей странице.Некоторые из них неуловимы. Некоторые из них - нет.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Брайан Хаферкамп
Сделано с
- HTML (мопс)/CSS (Sass)/JavaScript
О коде
Сетка перспективы с анимацией
В этой галерее используется CSS Grid Layout и перспектива CSS3,чтобы создать что-то немного уникальное.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:jquery.js
Автор
- Юлия Музафарова
О коде
Губка из чистого CSS
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Адаптивный:нет
Зависимости:-
Автор
- Энтони Фесси
Сделано с
- HTML/CSS (SCSS)/JavaScript
О коде
Анимация открытия CSS
css-анимация ,которая показывает текст и изображение с задержкой/направлением.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:jquery.js
Автор
- Джордж Гастингс
О коде
Анимированное обратное свечение
Псевдоэлемент и фоновая градиентная анимация и размытие.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Николай Таланов
Сделано с
- HTML/CSS (SCSS)/JavaScript
О коде
Классный макет со сложной цепочкой анимации
На основании этого - https://dribbble.com/shots/2802024-Satellite-Website-Prototype. Основанная на добавлении всего 2 классов с JS (и простого наведения),эта демонстрация включает в себя множество классных цепных анимаций ,в сочетании с хорошей производительностью и своего рода простым в обслуживании SCSS.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Владимир Гашенко
О коде
Парк развлечений Flat Design с анимацией CSS
Плоский дизайн Парк развлечений,анимированный с помощью чистого CSS3.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Тед Макдональд
О коде
Анимация волн CSS и SVG
Эта версия CSS3 с аппаратным ускорением,проста и намного более производительна.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Michiel Bijl
О коде
Анимация смахивания карты
Карточка смахивающая анимация Material Design.
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Michiel Bijl
О коде
Дизайн анимационных материалов CSS
HTML и CSS Material Design с анимацией.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Джони Тритхолл
О коде
Анимированные иконки корзины покупок
Просто экспериментирую с некоторой SVG-анимацией и интерактивностью для «Магазин фальшивых фруктов».
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Марк Боули
О коде
Анимированные пузыри на чистом CSS
Анимированные пузыри ,использующие только HTML и CSS.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Адриан Пейн
О коде
CSS Анимация пламени
Анимированное пламя,использующее только CSS3-анимацию и box-shadow
.Хотел посмотреть,смогу ли я разжечь огонь,используя только CSS - пламя включено!
Совместимые браузеры:Chrome,Firefox,Opera,Safari
Зависимости:-
Автор
- Дамиан Дригель
О коде
Анимация подписи
Чистый CSS,легкая анимация подписи .Без анимации GIF,только легкая (20 КБ) последовательность PNG,анимированная с использованием CSS3. Кнопка анимации «Воспроизвести» без JS,чистый CSS. Изменить цвет знака при наведении.
Совместимые браузеры:Chrome,Edge,Firefox,Opera,Safari
Зависимости:-
Автор
- Хаким Эль-Хаттаб