С появлением 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>
Скрипт достаточно простой, мы следим пока наш элемент не появится на странице, и добавляем к нему класс анимации.
Надеюсь эта статья была вам полезна, если так, поделитесь ей с друзьями.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Каролина Дубровка (пт, 2016-01-22 17:49)
напишите еще статью, пожалуйста, об анимации загрузки страницы. я вот читаю сейчас об этом блог https://shneider-host.ru/blog/animaciya-zagruzki-stranicy-v-drupal-7.html и довольно доступно написано) думаю, многим здесь это будет полезно))