Анимация Animations CSS уроки для начинающих академия
❮ Назад Дальше ❯
Анимация CSS
CSS анимация позволяет анимацию большинства HTML элементов без использования JavaScript или Flash!
CSS
Поддержка браузеров для анимаций
Номера в таблице указывают первую версию браузера, которая полностью поддерживает свойство.
Номера -WebKit-, -МОЗ-, или -o- укажат первую версию, которая работала с префиксом.
Свойство | |||||
---|---|---|---|---|---|
@keyframes | 43.0 4.0 -webkit- |
10.0 | 16.0 5.0 -moz- |
9.0 4.0 -webkit- |
30.0 15.0 -webkit- 12.0 -o- |
animation | 43.0 4.0 -webkit- |
10.0 | 16.0 5.0 -moz- |
9.0 4.0 -webkit- |
30.0 15.0 -webkit- 12.0 -o- |
Что такое анимация CSS?
Анимация позволяет элементу постепенно переходить от одного стиля к другому.
Вы можете изменить любое количество свойств CSS, сколько угодно раз.
Чтобы использовать анимацию CSS, необходимо сначала указать некоторые ключевые кадры для анимации.
Ключевые кадры держат какие стили элемент будет иметь в определенное время.
Правило @keyframes
При указании стилей CSS внутри @keyframes
правило, анимация будет постепенно меняться от текущего стиля к новому стилю в определенное время.
Чтобы получить анимацию для работы, необходимо привязать анимацию к элементу.
В следующем примере анимация «example» привязывается к элементу <div>. Анимация будет длиться 4 секунды, и она будет постепенно менять цвет фона элемента <div> от «Red» на «желтый»:
Пример
/* The animation code */@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Примечание: Свойство animation-duration
определяет, сколько времени должно занять анимация для завершения.
animation-duration
не задано, анимация не будет выполняться, так как значение по умолчанию равно 0 секундам.В приведенном выше примере мы указали, когда стиль изменится с помощью ключевых слов «from» и «to» (который представляет 0% (Start) и 100% (полный)).
Также можно использовать процент. С помощью процента можно добавить любое количество изменений стиля.
В следующем примере изменяется цвет фона элемента < div > при завершении анимации на 25%, завершении 50% и повторном завершении анимации на 100%:
Пример
/* The animation code */@keyframes example {
0% {background-color: red;}
50% {background-color: blue;}
100% {background-color: green;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
В следующем примере изменяется как цвет фона, так и положение элемента <div> при завершении анимации на 25%, завершении 50% и снова при завершении анимации 100%:
Пример
/* The animation code */@keyframes example {
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Задержка анимации
Свойство animation-delay
указывает задержку начала анимации.
Следующий пример имеет задержку в 2 секунды перед началом анимации:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: 2s;
}
Отрицательные значения также разрешены. При использовании отрицательных значений анимация запускается, как если бы она уже воспроизводится в течение N секунд.
В следующем примере анимация начнется, как если бы она уже играла в течение 2 секунд:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
Установить, сколько раз анимация должна выполняться
Свойство animation-iteration-count
указывает, сколько раз должна выполняться анимация.
В следующем примере анимация будет выполняться 3 раза, прежде чем она остановится:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 3;
}
В следующем примере используется значение «Infinite» для того, чтобы анимация продолжалась навсегда:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-duration: 4s;
animation-iteration-count: infinite;
}
Запуск анимации в обратном направлении или альтернативные циклы
Свойство animation-direction
указывает, следует ли воспроизвести анимацию вперед, назад или в альтернативных циклах.
Свойство «направление анимации» может иметь следующие значения:
normal
— Анимация воспроизводится как обычная (вперед). Это значение по умолчаниюreverse
— Анимация воспроизводится в обратном направлении (назад)alternate
— Анимация сначала разыгрывается вперед, затем назадalternate-reverse
— Анимация сначала воспроизводится назад, а затем пересылается
В следующем примере анимация будет запущена в обратном направлении (назад):
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-direction:
reverse;
}
В следующем примере используется значение «альтернативный», чтобы сначала запустить анимацию вперед, а затем назад:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction: alternate;
}
В следующем примере используется значение «альтернативный-обратный» для того, чтобы анимация сначала пробежала назад, а затем пересылает:
Пример
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction:
alternate-reverse;
}
Укажите кривую скорости анимации
Свойство animation-timing-function
определяет кривую скорости анимации.
Свойство «анимация-время-функция» может иметь следующие значения:
ease
— Указывает анимацию с медленным запуском, а затем быстро, а затем закончить медленно (это по умолчанию)linear
— Задает анимацию с одинаковой скоростью от начала до концаease-in
— Задает анимацию с медленным запускомease-out
— Задает анимацию с медленным концомease-in-out
— Задает анимацию с медленным началом и концомcubic-bezier(n,n,n,n)
— Позволяет определить собственные значения в функции кубической Безье
Пример
#div1 {animation-timing-function: linear;}
#div2
{animation-timing-function: ease;}
#div3 {animation-timing-function:
ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5
{animation-timing-function: ease-in-out;}
Задание режима заливки для анимации
Анимация CSS не влияет на элемент до воспроизведения первого ключевого кадра или после воспроизведения последнего ключевого кадра. Свойство «анимация-режим заполнения» может переопределить это поведение.
Свойство animation-fill-mode
задает стиль для целевого элемента, если анимация не воспроизводится (до начала, после завершения или и того и другого).
Свойство «анимация-режим заполнения» может иметь следующие значения:
none
— Значение по умолчанию. Анимация не будет применять стили к элементу до или после выполненияforwards
— Элемент сохранит значения стиля, заданные последним ключевым кадром (зависит от анимации-направления и анимации-количество итераций)backwards
— Элемент получит значения стиля, заданные первым ключевым кадром (в зависимости от направления анимации), и сохранит это во время анимации-период задержкиboth
— Анимация будет следовать правилам как вперед, так и назад, расширяя свойства анимации в обоих направлениях
Следующий пример позволяет элементу <div> сохранять значения стиля из последнего ключевого кадра при завершении анимации:
Пример
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-fill-mode: forwards;
}
Следующий пример позволяет элементу <div> получить значения стиля, заданные первым ключевым кадром до начала анимации (во время периода задержки анимации):
Пример
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: backwards;
}
Следующий пример позволяет элементу <div> получить значения стиля, заданные первым ключевым кадром до начала анимации, и сохранить значения стилей из последнего ключевого кадра при завершении анимации:
Пример
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: both;
}
Анимация Сокращенное свойство
В приведенном ниже примере используются шесть свойств анимации:
Пример
div
{
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Такой же эффект анимации, как и выше, можно достичь с помощью сокращенного animation
Свойства:
Пример
div
{
animation: example 5s linear 2s infinite alternate;
}
Свойства анимации CSS
В следующей таблице перечислены правила @keyframes и все свойства анимации CSS:
Свойство | Описание |
---|---|
@keyframes | Указывает код анимации |
animation | Сокращенное свойство для задания всех свойств анимации |
animation-delay | Указывает задержку начала анимации |
animation-direction | Указывает, следует ли воспроизвести анимацию вперед, назад или в альтернативных циклах |
animation-duration | Указывает, сколько времени должно занять анимация для завершения одного цикла |
animation-fill-mode | Задает стиль элемента, если анимация не воспроизводится (до начала, после завершения или и то, и другое) |
animation-iteration-count | Указывает, сколько раз должна воспроизводиться анимация |
animation-name | Указывает имя анимации @keyframes |
animation-play-state | Указывает, запущена ли анимация или приостановлена |
animation-timing-function | Задает кривую скорости анимации |
❮ Назад Дальше ❯
ReactJS и CSS анимация: инструкция к применению
Оглавление
Перед каждой современной IT-компанией рано или поздно возникает задача анимации страниц. На дворе 21 век и по-другому никак. В зависимости от степени тривиальности задачи, мы всегда стараемся найти библиотеку (или решение), предоставляющую максимальный спектр возможностей.
При этом полученный опыт настойчиво подсказывает нам одно простое правило: стандартное — значит, лучшее. Как минимум, в большинстве случаев. Мы многократно сталкивались с ситуациями, когда оптимальное решение буквально лежит под боком. Поэтому давайте будем двигаться от простых задач к сложным, требующим подключения дополнительных библиотек. Ведь наша цель — не только качественная анимация, но и оптимизация бизнес-процессов.
Далее мы рассмотрим основные технологии создания анимации, выделим их ключевые особенности и приведем примеры использования.
1. CSS анимация
CSS transitions
Его основное отличие от классического CSS animations состоит в том, что он применяется для переходов. То есть анимируется один раз. Что это значит?
К примеру, мы указываем некоторое свойство, которое будет анимироваться с помощью специальных CSS-правил. При изменении этого свойства, браузер обработает анимацию, но только один раз. Если же нам надо анимировать определенное, вплоть до бесконечности, количество раз, на помощь приходит CSS animations. Здесь мы приведем небольшой стандартный пример. Более подробно вы можете ознакомиться с ним в этой статье.
Вообще возможность связывать анимации с использованием CSS transition можно посредством обработчика на событие transitionend. Но мы этого делать не рекомендуем, так как keyframes (css animation) намного проще в использовании.
Через transition-property мы указываем, какое свойство будет анимироваться. В нашем случае это background-color.
Далее transition-duration указывает на продолжительность анимации (3 секунды).
Теперь любое изменение фонового цвета у этого класса будет анимироваться в течение 3 секунд. Также заметим, что через ключевое слово transition можно указать через пробел все параметры по порядку. Их мы рассмотрим ниже.
Transition-property — здесь можно указать почти любое CSS свойство, например, margin-left, padding-right, opacity и т. д.
Transition-duration — продолжительность анимации, задается в s (секундах) или ms (миллисекундах).
Transition-delay — время задержки анимации.
Transition-timing-function — временнáя функция, определяющая как процесс анимации будет распределен во времени. Например, будет ли она постепенно ускоряться или замедляться. Самые популярные параметры: ease, ease-in, ease-out, ease-in-out. Также упомянем функцию steps (количество шагов[, start/end]), которая разбивает нашу анимацию на четкое количество шагов. Она используется в основном для исключения плавных переходов (пример: счетчик чисел).
Пример:
CSS animation
Заканчиваем с простыми анимациями и переходим к технологии CSS animation. Что она собой представляет и в чем ее отличия?
Сложные анимации создаются объединением простых с помощью CSS-правила @keyframes. В нем мы задаем «имя» анимации и правила: что, откуда и куда анимировать. Правило @keyframes содержит имя элемента, связывающее его с блоком объявления элемента. Keyframes кадры создаются с помощью ключевых слов “from” и “to” (эквивалентны значениям 0% и 100%) или с помощью процентных пунктов. Их количество не ограничено: задавайте сколько угодно. Также можно комбинировать ключевые слова и процентные пункты. Если кадры имеют одинаковые свойства и значения, их можно объединить в одно объявление:
Если кадры 0% или 100% не указаны, то браузер пользователя создает их, используя вычисляемые (первоначально заданные) значения анимированного свойства. Если у двух ключевых кадров будут одинаковые селекторы, то последующий отменяет действие предыдущего.
Затем при помощи свойства animation: эта анимация подключается к элементу: задаются ее имя, время, дополнительные параметры и способ их применения.
Пример:
— (1) Имя анимации. Тут мы можем указать любое имя, соответствующее нашему имени в @keyframes. По сути оно будет обращаться туда. В приведенном примере мы указали все параметры в одну строчку. Для уточнения добавим: последний alternate указывает на то, что каждый раз анимация будет менять свое направление.
— (2) В @keyframes блоке мы указываем способ анимации. В данном случаем это будет смещение на определенное число пикселей.
Animate.css
Случаются моменты, когда нам предстоит применять нестандартные переходы, включающие в себя несколько простых анимаций. К счастью, их не приходится писать вручную. Существуют готовые эффекты под стандартные задачи. К примеру: мерцание, появление сверху/снизу, и т.д. С полным списком таких эффектов можно ознакомится здесь.
Теперь о том, как они будут выглядеть на практике. Установка и подключение описывается на официальном сайте. Здесь же мы остановимся на кратком описании использования Animate.css.
Для ее применения к элементу (разумеется, после установки), должны быть добавлены два класса: animated и любой другой на выбор — именно он определяет какую анимацию мы используем. На JQuery это будет выглядеть примерно так:
Если вы хотите заточить анимацию “под себя”, можно настроить и другие параметры (время исполнения, задержка и т.д.).
Пример:
2. React анимация
Этот пункт будет интересен, в первую очередь, пользователям React. Откровенно говоря, сначала мы его недооценивали. В итоге же стандартная библиотека React существенно упростила нам жизнь.
Чем же она оказалась полезной? Ответим на этот вопрос небольшим обзором двух API для анимации.
ReactCSSTransitionGroup
Небольшой пример, как это выглядит:
Как видите, ReactCSSTransitionGroup оборачивает элемент, который мы собрались анимировать. В transitionName мы присваиваем имя нашей анимации.
Примечание! Распространенная ошибка: выносить ReactCSSTransitionGroup не в рендер самого компонента, а в отдельную функцию. Так оно не работает!
Пример:
Мы можем отлавливать жизненное состояние нашей анимации даже в стилях. Имеется в виду отслеживание того, на каком этапе она находится.
Первый этап (1) — это наше начальное состояние. Далее с помощью уже готовых классов, добавленных к названию анимации, мы определяем, как именно будет меняться состояние элемента в следующий момент.
Далее (2) мы задаем начальное состояние для момента: когда элемент будет удален из DOM дерева и как именно будут меняться его стили перед удалением.
ReactTransitionGroup
Также встречаются задачи, когда жизненный цикл анимации надо контролировать непосредственно в самом js коде. На то существуют разные причины. Например, как и в случае ReactCSSTransitionGroup, присвоение стилей не всегда подходит. На помощь приходят жизненные циклы анимации.
Да, это очень похоже на методы жизненных циклов самого React. Здесь используется похожий подход. Перед вами методы из официальной документации:
componentWillAppear() — вызывается в том же время, что и componentDidMount(), при этом блокируя остальные анимации. Выполняется только при первичном рендере TransitionGroup.
componentDidAppear() — вызывается сразу после отработки componentWillAppear(). Вызов происходит с помощью callback функции, переданной в вызванный componentWillAppear().
componentWillEnter() — срабатывает в том же время, что и componentDidMount(), похожа на componentWillAppear(), но в отличии от него не вызывается при первичном рендере элемента.
componentDidEnter() — вызывается сразу после отработки componentWillEnter().
componentWillLeave() — вызывается в тот момент, когда элемент был удален из ReactTransitionGroup. Но он все еще будет виден, так как ReactTransitionGroup придержит его до вызова callback.
componentDidLeave() — вызов происходит сразу после отработки callback функции componentWillLeave(). Срабатывает в то же время, что и componentWillUnmount().
Предлагаем ознакомиться с примером, реализованном на одном из наших проектов.
Задача: Анимировать пункты таблицы таким образом, чтобы при выпадении всего списка, каждый из них появлялся плавно один за другим. Приводим небольшой кусок кода:
Пока все просто: мы оборачиваем в TransitionGroup то, что анимируется. Чтобы это дало свой эффект и TransitionGroup мог отловить момент, когда наш child элемент появился или исчез из DOM дерева, нам следует поставить флаг (2) isOpenedMenuItemWorks.
Далее посмотрим на манипуляции, которые происходят в самом анимируемом компоненте FadeUpContainer.
Пример показывает, что все child компоненты, находящиеся внутри TransitionGroup, получают в свое пользование методы жизненного цикла для анимации. В данном случае методы componentWillEnter() и componentWillLeave().
В приведенном примере мы использовали библиотеку для анимации gsap. Очень рекомендуем ознакомиться с ее документацией. Эта библиотека позволяет решить массу проблем, связанных с анимацией. Главная особенность ее использования в том, что мы должны дать функции (здесь TweenMax) ссылку на анимируемый элемент.
Догадаться, какие параметры в функции TweenMax и за что отвечают совсем нетрудно. El ссылка на элемент, время исполнения, начальное состояние, конечное состояние + callback + время задержки.
3. Продвинутое использование библиотек для анимации при скроллинге
В этой части статьи мы расскажем о библиотеках, с которыми приходилось сталкиваться на практике. На сегодня — это WOW.js и AOS animate.
Между ними нет существенной концептуальной разницы. Обе анимируют при скроллинге. Обе используют для анимации готовые классы animate css. Но все же имеется и одно принципиальное отличие. В AOS можно определить свои классы для анимации, тогда как WOW использует только готовые animate.css классы. Именно поэтому мы решили сконцентрироваться на AOS (в использовании WOW на него очень похож).
Для того чтобы AOS заработал, его надо добавить глобально.
Пример:
В принципе все. Можно смело использовать.
А вот еще одна задача: анимация счетчика чисел в определенной части страницы при скроллинге.
В заключение отметим, современные технологии предлагают широкий спектр решений для реализации анимаций. Остается лишь подобрать оптимальный вариант под поставленную задачу. Если вам нужна высокая производительность и максимальная гибкость, при отсутствии сложных требований — используйте CSS анимации. В случае сложных требований лучшим выбором станут javascript-based анимации. С ними вы можете реализовать практически любую задачу. Причем, с легкостью и без заметных потерь в производительности.
Если вам понравилась статья, не забудьте поделиться ею в социальных сетях. Всем хорошего дня!
Как использовать анимацию css учебник с примерами
Содержание:В этой статье я хочу показать вам, как использовать библиотеку animate.css.
Несколько лет назад я работал над проектом мобильного приложения, в котором пользовательский интерфейс был довольно продвинутым, с большим количеством движений и градиентов. Это было похоже на каждое из тех современных мобильных приложений, которые хотели бы предоставить пользователям лучший визуальный опыт.
Мне потребовалось много времени, чтобы создать все анимации в CSS и сделать их плавными и красивыми в соответствии с инструкциями дизайнера. Тогда я начал искать какое-то решение, которое сделает эту задачу более удобной и даст мне нужный результат без каких-либо сюрпризов.
Именно так я нашел библиотеку Animate.css и с самого начала решил, что это то, что мне нужно. Лично я считаю, что многим фронтенд-разработчикам очень нравится эта библиотека, так как она позволяет нам сделать пользовательский интерфейс действительно потрясающим.
Сегодня я хотел бы дать вам простой учебник о том, как шаг за шагом использовать библиотеку Animate.css, чтобы помочь вам погрузиться в этот удивительный ресурс.
П.С. Если вы тот, кто предпочитает смотреть, а не читать, присоединяйтесь к нам на нашем канале YouTube, где мы публикуем все наши уроки в виде видео.
Начнем!
1. Что такое библиотека animation.css?
Как написал создатель библиотеки на веб-сайте, это «просто добавь воды CSS-анимации». Очень просто использовать библиотеку, которую можно загрузить как один файл CSS и добавить в свой проект, чтобы использовать одну из множества предопределенных анимаций, добавив класс к элементу.
Вы можете настроить выбранные анимации, установив задержку и скорость эффекта. Можно использовать анимацию с чистыми проектами HTML и CSS, но вы также можете реализовать Javascript.
2. Установка
Есть два способа начать использовать библиотеку Animate.css. Если вы используете npm или yarn, достаточно установить их с помощью одной из следующих команд:
$ npm установить animate.css – сохранить
или
$ пряжа добавить animate. css
Но если вы не используете ни один из них, просто загрузите уменьшенный файл .css или получите CDN и загрузите его в раздел заголовка вашего основного файла, как в приведенном ниже коде:
<голова> голова>
или с CDN:
<голова> голова>
Помимо очень простой установки, Animate.css содержит всего один файл, поэтому он не сильно влияет на время загрузки, а производительность страницы по-прежнему безопасна.
3. Как добавить анимацию к элементу на вашей странице?
Теперь я хотел бы объяснить вам шаг за шагом, как вы можете добавить любую из доступных анимаций к элементу на вашей странице.
Давайте представим, что у вас на странице есть элемент h2, и вы хотите добавить анимацию отскока. В каждый элемент необходимо добавить анимированный
класс, а если хотите, чтобы он был бесконечным, то, конечно, добавить бесконечный
класс.
После этого необходимо указать выбранный вами тип анимации в качестве другого класса, в нашем случае отскок
. Давайте посмотрим на пример:
И вуаля! Это работает очень хорошо. Вы также можете установить некоторые дополнительные параметры, и вы можете стилизовать его вручную или добавить другие классы в соответствии с таблицами ниже:
Или вы можете создать его вручную, как и другие анимации в CSS, посмотрите пример ниже:
ч2 { продолжительность анимации: 2 с; анимация-задержка: 1с; количество итераций анимации: 5; }
Теперь, когда стало более понятно, как его использовать, давайте узнаем о различном использовании анимаций, предоставляемых библиотекой Animation.CSS, на трех разных примерах.
4. Загрузка анимации
Каждому макету нужен загрузчик для привлечения пользователей в ожидании данных. Animate.css может помочь нам создать красивую анимацию для любого макета. Давай попробуем!
Я решил использовать флип
анимацию для трех вложенных элементов. Два большинства внутренних элементов имеют задержку, поэтому это означает, что анимация этих элементов начинается на 1 или 2 секунды позже. Каждый элемент имеет скорость медленнее
, что, согласно таблице, означает 3 секунды.
5. Навигация с переключателем
Практически каждая страница нуждается в навигации, некоторые из них имеют типичную горизонтальную, но в настоящее время очень распространено использование переключаемого меню. Он современный, отзывчивый, удобный для пользователя и наверняка поможет клиентам запомнить ваш сайт.
Вот пример использования эффектов Animate.css в переключаемом меню с чистым Javascript.
6. Форма
Последний проект, который я хотел бы показать вам в этой статье с использованием библиотеки Animate. css, — это форма с простой проверкой.
Я хотел бы добавить эффект дрожания для элемента ввода, когда поле обязательно, но не заполнено.
Вот реализация:
Заключение
Как вы могли видеть в нескольких приведенных выше примерах, анимация может оживить и украсить пользовательский интерфейс.
Это также делает пользовательский опыт намного лучше, потому что что может быть лучше, чем дрожащее поле, показывающее, что это то, что не соответствует значению?
В CSS можно создать множество красивых и продвинутых анимаций с нуля, вы можете проверить короткую шпаргалка по анимации в одной из наших предыдущих статей, но гораздо проще и удобнее использовать специальную библиотеку, такую как Animate.css. Тем более, что он настолько мал, что не повредит производительности сайта.
Сообщите нам в комментариях, пытались ли вы использовать Animate.css или любую другую библиотеку для создания красивых анимаций в своих макетах. Если да, поделитесь своим мнением. Если нет, то может пора попробовать?
Спасибо за чтение,
Анна из Дуомли
Руководство по созданию HTML-таблицы
Как создать информационную панель с помощью учебника Bootstrap
Руководство по производительности React.js
Анна Данилек
Анна Данилек получила высшее образование в области управления бизнесом. В течение многих лет она получала солидный опыт во фронтенд- и бэкенд-разработке, создавая программное обеспечение для известных ИТ-компаний. Ее опыт в области ИТ — это React.JS, Angular, React Native, Flutter, Node.JS и Nest.JS. В последние годы она вела бизнес для Duomly, уделяя особое внимание ИТ, а также онлайн-маркетингу, дизайну и созданию контента, например, ведению блогов и YouTube. В нерабочее время Анна ведет свой настоящий криминальный канал на YouTube, любит спорт, солнце и средиземноморскую кухню.
Подробнее об Анне Данилец
Если вам понравилось, поделитесь и прокомментируйте!
Как анимировать SVG с помощью CSS: Учебное пособие с примерами
Примечание редактора : последнее обновление этой статьи состоялось 12 июля 2022 г. и включает дополнительные примеры.
Веб-анимация доставляет удовольствие, улучшая взаимодействие с пользователем, предоставляя визуальную обратную связь, помогая пользователям выполнять задачи и оживляя веб-сайты в целом. Существует несколько способов создания веб-анимации, включая использование библиотек JavaScript, GIF-файлов, встроенных видео и CSS.
По сравнению с громоздкими GIF-файлами и видео, анимации, добавленные на веб-сайты с помощью SVG и CSS, загружаются быстрее. Вы также можете создавать простые анимации, не добавляя еще одну библиотеку JavaScript к странице загрузки вашего веб-сайта.
В этой статье мы узнаем, как создавать легкие масштабируемые анимации с помощью SVG и CSS. Хотя мы будем использовать Sass для демонстраций, CSS также будет работать. Давайте начнем!
- Распространенные варианты использования анимации SVG с помощью CSS
- Иконы
- Иллюстрации
- Как подготовить SVG для анимации
- Оптимизация кода SVG
- Создание преднамеренных группировок
- Остерегайтесь порядка укладки
- Установить предпочтительный начальный стиль SVG
- Применение CSS к SVG
- Что можно анимировать с помощью CSS?
- Вращающийся погрузчик
- Сасс
- HTML
- Анимация рисования линий
- Анимированная иллюстрация
- Гамбургер-меню
- Появление и исчезновение текста
- Волнистый текст SVG
- Другие инструменты для анимации SVG
Распространенные варианты использования анимации SVG с помощью CSS
Прежде чем мы перейдем к коду, давайте рассмотрим некоторые практические способы использования анимированных SVG.
Иконки
Анимированные SVG отлично подходят для значков, которые указывают на микровзаимодействия и изменения состояния. Они также полезны, когда направляют пользователя к следующему действию, например, во время ознакомительного тура. Общие варианты использования включают загрузку, выгрузку, переключение меню, а также воспроизведение и приостановку видео.
Иллюстрации
Иллюстрации — еще один распространенный вариант использования. Они могут быть включены в продукт как пустое состояние, демонстрирующее, что нужно сделать для создания данных на информационной панели. Другие популярные варианты использования включают анимированные смайлики и стикеры. Есть также анимированные точечные иллюстрации, которые помогают украсить целевые страницы.
Как подготовить SVG для анимации
Поскольку проще начать с упрощенного кода SVG, первая часть анимации SVG — это их подготовка. Вы можете сделать это, выполнив следующие шаги:
Оптимизация кода SVG
Когда создается SVG, в нем часто присутствует лишний ненужный код, поэтому важно его оптимизировать. Вы можете использовать такой инструмент, как SVGOMG, который уменьшает размер файла и удаляет все ненужные теги и метаданные.
Создание преднамеренных группировок
При необходимости вы можете создать преднамеренные группировки, открыв SVG в редакторе кода и приняв к сведению элементы
, которые используются для группировки элементов SVG. Если вы хотите анимировать группу элементов вместе, оберните их в
и назовите их классом или идентификатором.
Если мы хотим одинаково стилизовать несколько путей, мы также можем рассмотреть возможность преобразования имен идентификаторов в имена классов.
Остерегайтесь порядка укладки
Это кажется нелогичным, но фигуры, перечисленные последними, будут вставлены поверх вышеупомянутых фигур. Если мы хотим, чтобы фигура отображалась на заднем плане, мы должны убедиться, что она указана в верхней части кода SVG. Фигуры SVG рисуются по порядку сверху вниз.
Установить стиль SVG в предпочтительное начальное состояние
SVG имеют атрибуты представления, похожие на стили CSS, но устанавливаемые непосредственно в SVG. Типичным примером является заливка цветом
. Поскольку эти стили установлены в SVG, вы можете предположить, что они имеют большое значение для браузера. Как оказалось, любой CSS или Sass, который мы устанавливаем извне, естественно переопределит стиль SVG без необходимости объявления !important
.
Однако помните о том, что установлено в SVG, чтобы вы могли подготовиться к тому, что отображается во время загрузки страницы. Например, страница с медленной загрузкой будет отображать вспышку SVG до применения стилей CSS. Я рекомендую вам оставить ширину и высоту, чтобы избежать этого; Sara Soueidan хорошо объясняет вспышку нестилизованных SVG в своем блоге на эту тему.
Применение CSS к SVG
Теперь, когда мы привели в порядок SVG, давайте рассмотрим несколько вариантов добавления CSS.
При применении CSS к SVG следует учитывать несколько соображений. Одним из ограничений является то, что мы не можем использовать внешнюю таблицу стилей для применения стилей к SVG, связанному извне.
Более 200 000 разработчиков используют LogRocket для улучшения цифрового взаимодействия
Подробнее →Встраивание кода SVG в HTML делает элемент SVG и его содержимое частью дерева DOM документа, поэтому на них влияет CSS документа. Этот метод мой любимый, потому что он отделяет стили от разметки.
Изучив другие варианты ниже, мы увидим, что все они взаимосвязаны. Если вы используете Rails, есть некоторые драгоценные камни, которые могут автоматически встраивать SVG в представления. Таким образом, в вашем коде вы можете просто сослаться на внешний SVG, и тогда он будет встроен при компиляции. Дополнительным преимуществом этого метода является то, что встраивание SVG означает, что на один HTTP-запрос меньше, что повышает производительность:
Мы можем добавить стили CSS в тег