Css свойство animation

Содержание:

Значения свойства

Значение Описание
animation-name Указывает имя анимации/список анимаций, которые должны быть применены к выбранному элементу. Каждое имя указывает на правило (@keyframes), которое определяет значения свойств анимации. Значение по умолчанию none.
animation-duration Определяет, сколько секунд или миллисекунд затрачивается на выполнение одного цикла анимации. Значение по умолчанию 0.
animation-timing-function Определяет кривую скорости для анимации (используется математическая функция — кубическая кривая Безье). Кривая скорости определяет время анимации, используемое, чтобы изменить один набор стилей CSS на другой. Значение по умолчанию ease.
animation-delay Определяет задержку для запуска анимации. Значение по умолчанию 0.
animation-iteration-count Указывает, сколько раз анимация должна быть воспроизведена. Значение по умолчанию 1.
animation-direction Определяет будет ли анимация воспроизводиться в обратном направлении, или в виде чередующихся циклов. Значение по умолчанию normal.
animation-fill-mode Задает стиль для элемента, когда анимация не воспроизводится (когда она будет закончена, или когда она имеет задержку, установленную свойством animation-delay ). Значение по умолчанию none.
animation-play-state Определяет состояние анимации (анимация воспроизводится, либо приостановлена). Значение по умолчанию running.

Техника безопасности при установки капельницы

Задержка анимации

Свойство указывает задержку начала анимации.

В следующем примере перед запуском анимация задерживается на 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;}

Overview

Ionic Animations is a utility that allows developers to build complex animations in a platform agnostic manner. Developers do not need to be using a particular framework such as React or Angular, nor do they even need to be building an Ionic app. As long as developers have access to v5.0 or greater of Ionic Framework, they will have access to all of Ionic Animations.

Building efficient animations can be tricky. Developers are often limited by the libraries available to them as well as the hardware that their apps run on. On top of that, many animation libraries use a JavaScript-driven approach to running animations where they handle the calculation of your animation’s values at every step in a
loop. This reduces the scalability of your animations as the library is constantly computing values and using up CPU time.

Ionic Animations uses the Web Animations API to build and run your animations. In doing this, we offload all work required to compute and run your animations to the browser. As a result, this allows the browser to make any optimizations it needs and ensures your animations run as smoothly as possible. While most browsers support a basic implementation of Web Animations, we fallback to
CSS Animations for browsers that do not support Web Animations. The performance difference in switching between these two should typically be negligible.

Run Animation in Reverse Direction or Alternate Cycles

The property specifies
whether an animation should be played forwards, backwards or in alternate
cycles.

The animation-direction property can have the following values:

  • — The animation is played as normal
    (forwards). This is default
  • — The animation is played in
    reverse direction (backwards)
  • — The animation is played
    forwards first, then backwards
  • — The animation is played
    backwards first, then forwards

The following example will run the animation in reverse direction (backwards):

Example

div { 
width: 100px;  height: 100px; 
position: relative;  background-color: red; 
animation-name: example; 
animation-duration: 4s;  animation-direction:
reverse;}

The following example uses the value «alternate» to make the animation
run forwards first, then backwards:

Example

div { 
width: 100px;  height: 100px; 
position: relative;  background-color: red;  animation-name: example;  animation-duration: 4s;  animation-iteration-count: 2;  animation-direction:
alternate;}

The following example uses the value «alternate-reverse» to make the animation
run backwards first, then forwards:

Example

div {  width: 100px;  height: 100px; 
position: relative;  background-color: red;  animation-name: example;  animation-duration: 4s;  animation-iteration-count: 2;  animation-direction:
alternate-reverse;}

Преимущества автоответчика на входящие письма

Использование animate.css

Первый шаг для использования этой библиотеки после загрузки — добавить файл CSS в HTML-код:

<link rel="stylesheet" href="css/animate.min.css">

После того, как библиотека загружена на вашу веб-страницу, у вас появится доступ ко всей анимации, написанной в ней, и для вызова её для элемента все, что вам нужно сделать, это задать ему класс animated и имя нужной вам анимации.

вы можете просмотреть примеры и названия всех анимаций содержащихся в библиотеке. Например:

<h1 class="animated flash">Hello</h1>

Если вы перезагрузите страницу, вы сразу увидите, что текст в H1 будет моргать.

Это замечательно, но обычно требуется анимировать нажатие кнопок или когда пользователь выполняет какие-то действия. Для этого вам нужно воспользоваться небольшим кодом JavaScript, чтобы вызвать событие click и добавить классы к вашему элементу. Представьте себе этот HTML:

<button>Click</button>
<section>
Proin sapien ipsum, porta a, auctor quis, euismod ut, mi. Curabitur a felis in nunc fringilla tristique. Sed augue ipsum, egestas nec, vestibulum et, malesuada adipiscing, dui.
</section>

Например вы хотите сделать эффект появления текста при нажатии кнопки.

Сначала вы задаете блоку с текстом непрозрачность 0. Затем динамически добавляете классы с помощью JS:

$('button').click(function() {
    $('section').addClass('animated fadeInLeft');
});

Изменить скорость анимации в CSS, можно например, так:

.animated {
  -webkit-animation-duration: 200ms;
  -moz-animation-duration: 200ms;
  animation-duration: 200ms;
}

Вы также можете изменить задержку анимации и количество ее воспроизведений, используя animation-delay и animation-iteration-count.

Еще одна замечательная вещь, которую мы можем сделать, это вызвать функцию, когда анимация заканчивается, и выполнить другую анимацию для перехода, или просто запустить функцию. Чтобы сделать это, вы должны создать событие окончания анимации и добавить в нем класс анимации, который вы хотите применить к элементу. В моем случае я также добавлю класс delay, который позволит мне сделать задержку между постепенным появлением и постепенным затуханием:

$('section').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
	$('section').addClass('delay fadeOutRight');
});

Что касается CSS, все, что вам нужно сделать, это добавить класс delay:

.delay {
	-animation-delay: 2s;
	-webkit-animation-delay: 2s;
	-moz-animation-delay: 2s;
}

Когда вы запустите этот CSS и JavaScript код, вы увидите, что он создает идеальное постепенное исчезновение. Он остается на странице в течение двух секунд, а затем исчезает, и все задержки анимации были созданы с использованием только CSS.

Комбинация функций в свойстве transform

Достаточно часто приходится комбинировать 2 или 3 функции свойства transform. В этом случае следует указывать функции в свойстве transform через пробел, а не писать их несколько друг под другом.

несколько функций в свойстве transform

.circle1:hover {
transform: scale(1.5) rotate(90deg) translateY(-50px);
}
.circle2:hover {
transform: translateY(-50px) rotate(90deg) scale(1.5) ;
}
.circle3:hover {
transform: scale(1.5);/* неверно, выпонится только последняя трансформация */
transform: rotate(90deg); /* неверно, выпонится только последняя трансформация */
transform: translateY(-50px);
}

1
2
3
4
5
6
7
8
9
10
11

.circle1hover{

transformscale(1.5)rotate(90deg)translateY(-50px);

}

.circle2hover{

transformtranslateY(-50px)rotate(90deg)scale(1.5);

}

.circle3hover{

transformscale(1.5);/* неверно, выпонится только последняя трансформация */

transformrotate(90deg);/* неверно, выпонится только последняя трансформация */

transformtranslateY(-50px);

}

See the Pen CSS transform: several functions by Elen (@ambassador) on CodePen.dark

Обратите внимание, что в зависимости от того, в какой последовательности перечислены свойства, эффект трансформации, возникающий при наведении, может быть разным. Альтернативой указанию нескольких свойств служит функция matrix()

Альтернативой указанию нескольких свойств служит функция matrix().

Используйте комбинации из animation-timing-function

Одна из очень частых стенок в головах у начинающих верстальщиков – это мысль о том, что animation-timing-function существует в единственном экземпляре на всю анимацию. Так вот, это не так.

Мы можем задавать в каждом фрейме в keyframes свою функцию и она будет работать до следующего фрейма, а в следующем – никто не мешает задать еще одну и.т.д. В последнем фрейме, разумеется, уже ничего не указываем – анимация там заканчивается.

Пример:

Зачем это может быть нужно? В первую очередь для создания всевозможных подпрыгиваний, отпрыгиваний, смены скорости движения в соответствии с физикой, но без прибегания к скриптам. На самом деле пользователь и не заметит, если где-то движения будут не совсем соответствовать физическим законам, особенно если они будут намеренно преувеличенными, мультяшными. Это определенно стоит взять на вооружение.

Чтобы лучше понять, о чем идет речь, посмотрим красивый пример от David Lewis (концепт не адаптивный, лучше открыть на большом экране в новой вкладке):

Specify the fill-mode For an Animation

CSS animations do not affect an element before the first keyframe is played
or after the last keyframe is played. The animation-fill-mode property can
override this behavior.

The property specifies a
style for the target element when the animation is not playing (before it
starts, after it ends, or both).

The animation-fill-mode property can have the following values:

  • — Default value. Animation will not
    apply any styles to the element before or after it is executing
  • — The element will retain the
    style values that is set by the last keyframe (depends on animation-direction
    and animation-iteration-count)
  • — The element will get the style
    values that is set by the first keyframe (depends on animation-direction), and
    retain this during the animation-delay period
  • — The animation will follow the rules
    for both forwards and backwards, extending the animation properties in both
    directions

The following example lets the <div> element retain the style values from the
last keyframe when the animation ends:

Example

div {  width: 100px;  height: 100px;  background: red;  position: relative;  animation-name: example;  animation-duration: 3s;
  animation-fill-mode: forwards;
}

The following example lets the <div> element get the style values set by the
first keyframe before the animation starts (during the animation-delay period):

Example

div {  width: 100px;  height: 100px; 
background: red;  position: relative; 
animation-name: example; 
animation-duration: 3s; 
animation-delay: 2s;  animation-fill-mode: backwards;
}

The following example lets the <div> element get the style values set
by the first keyframe before the animation starts, and retain the style values
from the last keyframe when the animation ends:

Example

div {  width: 100px;  height: 100px;  background: red;
  position: relative; 
animation-name: example; 
animation-duration: 3s; 
animation-delay: 2s;  animation-fill-mode: both;
}

Программы удаленного доступа

Системным администраторам часто приходится подключаться к удаленным рабочим местам. Для реализации этого функционала существует много программ. Самая популярная и у всех на слуху — teamviewer. Но она платная, а в бесплатной версии существуют ограничения, которые зачастую не позволяют ее использовать. Приходится искать компромиссы.

Есть неплохой аналог — LiteManager. В бесплатной версии существует ограничение на 30 рабочих мест. Если у вас их меньше или вы используете программу для доступа к каким-то техническим машинам, там где не подходит rdp по какой-то причине (сервер СКУД, клиент видеонаблюдения и т.д.), то возможно вам будет достаточно этой программы.

Если у вас больше 30-ти рабочих мест и нужен удаленный доступ ко всем машинам, то выход — vnc сервер. Я предпочитаю TightVNC. Решение подходит только для локальной сети, либо для канала хотя бы в 30-50 мегабит. У vnc очень медленный протокол и пользоваться им при низкой скорости канала просто невозможно.

Если нужен удаленный доступ по vnc в локальную сеть, то можно использовать vpn, либо более просто вариант — подключаться куда-то в локалку по rdp, а потом уже по vnc. С современными скоростями интернета получается вполне рабочий вариант. Я использую в некоторых ситуациях. Для безопасности просто ограничиваю доступ по rdp на уровне ip. У меня есть возможность подключаться с нескольких статичных ip адресов.

Why You Need an Animated Website?

For designers, the maturity of CSS and HTML has made designers more creative than ever before, bringing life to websites with CSS animations. Cool animation and creative UX writing are always impressive. They can also help to explain complex ideas quickly and easily, as well as guide users’ actions with the help of appropriate CTA. 

For users, a cool and logical animated website has a better guide on actions. If you checking the data, you can find that the interactive website will hold a longer visit and higher conversation than the static one. Because animated and illustrated websites have more personalized dynamic visual effects that contribute to user satisfaction and longer site visits. 

CSS Advanced

CSS Rounded CornersCSS Border ImagesCSS BackgroundsCSS ColorsCSS Gradients
Linear Gradients
Radial Gradients

CSS Shadows
Shadow Effects
Box Shadow

CSS Text EffectsCSS Web FontsCSS 2D TransformsCSS 3D TransformsCSS TransitionsCSS AnimationsCSS TooltipsCSS Style ImagesCSS object-fitCSS ButtonsCSS PaginationCSS Multiple ColumnsCSS User InterfaceCSS Variables
The var() Function
Overriding Variables
Variables and JavaScript
Variables in Media Queries

CSS Box SizingCSS Media QueriesCSS MQ ExamplesCSS Flexbox
CSS Flexbox
CSS Flex Container
CSS Flex Items
CSS Flex Responsive

Как сканируют страницы?

Роботы Яндекса и Google проходятся по текстам, оценивая  ключевые типы запросов, словосочетания тематики, общий смысл. На этом фоне родился LSI-копирайтинг.

Запросы пользователей изменились. Вводят запутанные по своей структуре слова и словосочетания, поисковики могут оценивать статьи и выдавать нужные результаты.

Сложнее зарабатывать на плохих сайтах, создаваемых для продажи ссылок. Они не пользуются популярностью, их скучно читать, пользы в них для обычного пользователя почти нет. Их главная задача: заманить человека с целью нажатия на рекламу. На некоторых сайтах реклама выводится в виде pop-up окон на весь экран, предлагает перейти на сайт рекламодателя.

LSI-копирайтинг — оригинальная методика написания текстов

Рассинхронизируйте все движения

Очень часто, особенно если речь идет про бесконечные анимации с несколькими элементами, возникает необходимость их оживить, добавить неравномерность в общее движение. Если у вас такая задача возникла, то будет хорошей идеей немного изменить все длительности в анимации. Да, прям вот так, слегка их поменяйте, чтобы они все были разными. Больше ничего делать не нужно. Здесь стоило бы сказать, что длительности всех движений должны быть взаимно простыми числами, но по отношению к числам с плавающей запятой это высказывание будет немного некорректным.

Что это нам даст? Все очень просто – у нас рассинхронизируется вся анимация.

Этот совет, несмотря на свою простоту и очевидность, почему-то постоянно забывается и приводит к тому, что люди начинают сочинять очень сложные keyframes там, где можно просто рассинхронизировать длительности. Наверное это буквальное следования совету об использовании разных animation-timing-function. Они ведь такие, один раз попробуешь – и все. Вызывают зависимость. Не злоупотребляйте.

Установите, сколько раз анимация должна запускаться

Свойство указывает, сколько раз анимация должна запускаться.

В следующем примере анимация будет запущена 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-name: example;  animation-duration: 4s;
  animation-iteration-count:
infinite;}

Направление анимации

Используя свойство `animation-direction`, мы можем управлять направлением воспроизведения анимации. Вот возможные значения:

  • `animation-direction: normal;` — анимация воспроизводится в прямом порядке, как обычно;
  • `animation-direction: reverse;` — анимация воспроизводится в обратном порядке, от `to` к`from`;
  • `animation-direction: alternate;` — чётные повторы анимации воспроизводятся в обратном порядке, нечётные — в прямом;
  • `animation-direction: alternate-reverse;` — нечётные повторы анимации воспроизводятся в обратном порядке, чётные — в прямом.

See the Pen Direction of animation by Dash Bouquet (@dashbouquetdevelopment) on CodePen.

Устранение конфликта 2 звуковых карт

20 способов перекинуть данные с Android на iPhone

Создание дерева

1. Разметка

Начнём всё же с HTML, без него никак. Нам понадобится создать простую разметку для описания будущего дерева.

Рисуют обычно на холсте, и нам он тоже понадобится, поэтому для начала создадим блок . Внутри этого блока будет находиться непосредственно дерево . У дерева будет ствол и несколько веток — элементы с классом . По сути ветви — это части ствола, и мы отразим это в разметке, сделав их дочерними элементами блока . То же самое с листьями — элементы будут вложены в родительский элемент своей ветки.

Вот так выглядит фрагмент разметки дерева с одной веткой, остальные — по аналогии:

Конечно, пока это просто несколько пустых блоков, но каркас мы уже сформировали. Двигаемся дальше.

2. Подготовка

Переходим к CSS. Для начала нужно спозиционировать наше будущее дерево на холсте. Сделаем флекс-контейнером и выровняем вложенный элемент по центру. Также определим размеры холста и зададим ему фоновый цвет.

Возможно, вы пока не знакомы с флексбоксами, но это не страшно. Сейчас мы используем их только чтобы отцентровать элемент. Если будет интересно, интерактивный курс про флексбоксы поможет разобраться в теме.

3. Рисуем ствол и ветки

Всё, теперь мы точно добрались до рисования.

И ствол, и ветки будут одинакового цвета и формы, поэтому сразу объединим все CSS-свойства, с помощью которых добьёмся нужного эффекта. Цвет зададим с помощью градиента, чтобы элементы казались менее плоскими, а ещё добавим небольшое скругление на концах веток и ствола. Так будет выглядеть код:

Чтобы элементы, наконец, отобразились, нужно задать им размеры. Ствол сделаем шириной , а ветки в два раза тоньше — по . Плюс зададим стволу высоту и выровняем его по центру. На следующем шаге мы будем распределять ветки по своим местам на стволе дерева, а для этого нужно задать стволу относительное позиционирование, а веткам — абсолютное. Это позволит задавать положение каждой конкретной ветки относительно ствола свойствами , , , и имитировать рост веток.

4. Ставим ветки на место

Пришло время нашей заготовке превратиться в то, что действительно будет похоже на дерево.

  1. Для начала часть веток должна быть слева, а другая — справа. Мы будем выбирать нужные ветки с помощью селектора — для чётных элементов и — для нечётный, а затем вращать их с помощью свойства и функции на 60 градусов влево и вправо.

    Здесь есть одна тонкость. По умолчанию элемент вращается относительно своего центра, а это не то поведение, которое нам нужно от веток. Они должны вращаться относительно нижней точки элемента — места прикрепления к стволу. И есть хорошая новость — мы можем переопределить поведение по умолчанию, используя свойство с подходящим значением, тогда ветки будут вращаться относительно своей нижней точки, а не вокруг центра. Добавим элементу нужное свойство в дополнение к уже существующим:

    Чтобы лучше понять, как работает свойство , посмотрите эту демку.

  2. Теперь нам нужно учесть, что ветки расположены несколькими ярусами, и их длина становится тем меньше, чем ближе к верхушке дерева они растут. Укажем для каждой ветки расстояние от верхушки и её длину. Ниже фрагмент кода для первых трёх веток, а дальше зададим значения для остальных веток по аналогии:

5. Рисуем листья

Как видите, мы соблюдаем логику, заложенную природой — ветки выросли из ствола, а листья будут расти из веток. Листья — дочерние элементы, поэтому снова позиционируем их относительно родительского элемента .

Ещё добавили листикам размер и цвет с помощью градиента, а также закруглили края. Осталось расположить каждый ряд на своём уровне, задав свойство с соответствующими значениями. Вот код для первых двух рядов:

На этом с созданием дерева мы закончили, осталось только разместить листочки на своих местах и, наконец, добавить анимацию.

Базовая работа с @keyframes:

Для начала надо научится с ним работать базова, самые основы так сказать и понять в чём его суть, CSS анимация через keyframes, работает достаточно интересно.

Суть работы с @keyframes:

Суть работы с ним заключаться в том, что он сам @keyframes, просто задаёт когда и какое свойство нужно изменить и всё, для настройки времени анимации или сколько раз она будет проигрываться, используется свойства «animation-…».

Свойства «animation-…» для @keyframes:

Этих свойств очень много  и применяются они к элементу, который вы хотите анимировать, сначала покажу только самые основные.

  • animation-duration — Задаёт время анимации;
  • animation-iteration-count — Задаёт сколько раз будет проигрываться анимация;
  • animation-name — Задаёт имя анимации или имя @keyframes;

Это ещё не все свойства, ниже будут ещё, здесь только самые базовые.

Пример работы с @keyframes:

Для примера будет показан блок div, виде квадрата, с помощью анимации будем его изменять,  как его создавать в HTML показывать не буду, если вы читаете эту статью, думаю вы уже умеете это делать.

CSS же очень простой, сначала пишем стили для блока, что бы он выглядел как блок, потом уже и сами настройки анимации.

CSS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

.square {

width100px;

height100px;

background-colorgreen;

animation-duration10s;

animation-iteration-countinfinite;

animation-namesquare1;

}
 

@keyframes square {

from {

width100px;

background-colorgreen;

}

50% {

background-colorblue;

}

to {

width200px;

background-colorred;

}

}

Разбор кода:

Давайте теперь разберем, что тут написано, первые три строчки свойств для нашего квадрата, это размер и цвет блока.

Потом задаём времени и сколько раз должно проигрываться, там используется параметр infinite, что значит проигрывать анимацию бесконечно, ну и в конце задаётся имя анимации.

Теперь что касается самой анимации, задаётся слово @keyframes, после него идёт имя анимации.

В from задаётся начальные свойства элемента, на которую используется анимация, но задавать его не обязательно, также это слово можно заменить, просто написав вместо него 0%.

Что касается 50%, то это какие свойства будут использоваться, когда анимация проигралась на 50%, можно использовать 30%, 20%, 70%, это не важно, главное чтобы не меньше 0% и не больше 100%. В to это конечное значение, какие свойства должны быть когда анимация закончит проигрываться, также его можно заменить 100%

В to это конечное значение, какие свойства должны быть когда анимация закончит проигрываться, также его можно заменить 100%.

Рандомизируйте z-index

Раз уж мы заговорили про рандомизацию, то будет не лишним отметить тот факт, что иногда бывает полезно в какой-то группе элементов задать им всем случайный z-index. Хотя бы в диапазоне (-1, 1). Часто такой прием используется при создании анимаций, где какой-нибудь заголовок заранее делится на отдельные span-элементы, а потом или они анимируются, или что-то анимируется вокруг них.

На чистом CSS это может выглядеть как-то так:

Это выглядит не очень красиво и не очень универсально, так что имеет смысл написать миксин для вашего препроцессора, который подсобит с рандомизацией.

Заняный пример использования этого приема можно посмотреть в популярном примере, который сделала Ana Tudor:

На самом деле бывает полезно рандомизировать и другие CSS-свойства, но именно z-index приводит к самым интересным результатам на мой взгляд. Здесь буквально нарушается порядок элементов на странице, они все оказываются в разных слоях и можно делать разного рода многослойные анимации с отдельными частями слов или отдельными элементами интерфейса. Это свойство открывает действительно широкий простор для творчества.

Basic Usage

  1. Include the stylesheet on your document’s
<head>
  <link rel="stylesheet" href="animate.min.css">
</head>
<head>
  <link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/animate.css@3.5.2/animate.min.css">
  <!-- or -->
  <link rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css">
</head>
<head>
  <link rel="stylesheet" 
  href="https://cdn.jsdelivr.net/npm/animate.css@3.5.2/animate.min.css"
  integrity="sha384-OHBBOqpYHNsIqQy8hL1U+8OXf9hH6QRxi0+EODezv82DfnZoV7qoHAZDwMwEJvSw"
  crossorigin="anonymous">
  <!-- or -->
  <link rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css"
  integrity="sha384-OHBBOqpYHNsIqQy8hL1U+8OXf9hH6QRxi0+EODezv82DfnZoV7qoHAZDwMwEJvSw"
  crossorigin="anonymous">
</head>
  1. Add the class to the element you want to animate.
    You may also want to include the class for an infinite loop.

  2. Finally you need to add one of the following classes:

Class Name

Full example:

<h1 class="animated infinite bounce">Example</h1>
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector