С появлением CSS 3, красивые эффекты стали нормой на сайтах, к сожалению, создавать красивые анимации, которые бы работали во всех браузерах – дано не каждому.
И для этих людей, у меня есть отличное решение =)
Animate.css – это библиотека собравшая в себе более 60 красивых CSS-анимаций, она кроссбраузерна, и крайне удобна в использовании. Просто подключите ее к вашей странице, и добавьте пару классов к необходимому элементу, а теперь поподробней.
Установка
Для начала скачайте саму библиотеку
В архиве нам понадобятся 2 файла:
animate.css – обычный
animate.min.css – сжатый
Примеры доступных эффектов можно посмотреть на сайте автора
Подключаем библиотеку к нашей странице, с помощью тега link
<link rel="stylesheet" href=" animate.min.css">
Теперь мы можем использовать Animate.css, для этого нужно добавить 2 класса “animated” и класс необходимого эффекта.
Начнем с простого:
<h3 class="animated shake">Пример 1, обычная анимация при загрузке страницы</h3>
Сюда же можно добавить 3 класс «infinite», если вы хотите что бы анимация не заканчивалась
<h3 class="animated shake infinite">Пример 2, бесконечная анимация</h3>
Как установить задержку перед анимацией?
Теперь давайте научимся дополнительно настраивать нашу анимацию. Есть несколько свойст CSS 3, которые нам в этом помогут. Можно добавить их в отдельный CSS-файл, или включить прямо в тело нашей страницы с помощью тега «style» (обычно так не делают, но для примера сойдет).
Сами свойства:
animation-duration – продолжительность анимации,
animation-delay – задержка перед анимацией,
animation-iteration-count – количесво повторений, можем поставить число, или infinite – для бесконечных повторений.
Попробуем для начала изменить продолжительность анимации (не забываем про префиксы для браузеров):
<h3 id="pr3" class="animated shake">Пример 3, изменили продолжительность</h3> <style> #pr3{ -webkit-animation-duration: 2s; -moz-animation-duration: 2s; -o-animation-duration: 2s; animation-duration: 2s; } </style>
Теперь давайте установим задержку в 2 секунды, а количесво повторений в 5:
<h3 id="pr4" class="animated shake">Пример 4, задержка анимации 2 секунды, повторяется 5 раз</h3> <style> #pr4{ -webkit-animation-delay: 2s; -moz-animation-delay: 2s; -o-animation-delay: 2s; animation-delay: 2s; -webkit-animation-iteration-count: 5; -moz-animation-iteration-count: 5; -o-animation-iteration-count: 5; animation-iteration-count: 5; } </style>
Все замечательно работает, но применение библиотеки сильно ограниченно. Как это решить? Давайте добавим немножно JQuery!
Скачиваем актуальную версию здесь, и подключаем в разделе head:
<script src="jquery-1.11.3.min.js"></script>
Теперь давайте шаманить =)
Самый частый вариант использования такой связки, вызов анимации при клике на объекте, для этого, мы отловим когда произойдет нажатие по объекту, и добавим к нему необходимые классы.
<h3 id="pr5">Пример 5, анимация по клику</h3> <script> $('#pr5').click(function() { $('#pr5').addClass('animated shake'); }); </script>
Так же, можно вызывать анимацию при наведении мыши:
<h3 id="pr6">Пример 6, анимация по клику</h3> <script> $('#pr6').hover( function() { $(this).addClass('animated shake'); }, function() { $(this).removeClass('animated shake'); } ); </script>
C помощью JQuery можно отследить когда закончится анимация, и сделать что-нибудь еще, например, вызвать другую анимацию, или изменить свойства объекта:
<h3 id="pr7">Пример 7, анимация по клику, затем вызов еще одной анимации</h3> <script> $('#pr7').click(function() { $('#pr7').addClass('animated shake'); }); $('#pr7').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { $('#pr7').addClass('fadeOut', function() {$('#pr7').hide();}); }); </script>
Что здесь происходит:
- Мы вызываем анимацию по клику
- Отлавливаем ее завершение с помощью функции .one
- Вызываем еще одну анимацию, в конце которой прячем объект
Как по мне, получилось здорово =)
Еще одна крутая фишка, которую можно сделать с Jquery, это
Анимация при прокрутке:
<h3 id="pr8">Пример 8, анимация при прокрутке</h3> <script> $(window).scroll(function() { $('#pr8').each(function(){ if ($(this).offset().top < $(window).scrollTop()+300) { $(this).addClass('animated wobble'); } }); }); </script>
Скрипт достаточно простой, мы следим пока наш элемент не появится на странице, и добавляем к нему класс анимации.
Источник