Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Железо
  • Создание анимации при прокрутке страницы при помощи jQuery. Введение в анимации прокрутки на основе jQuery Что такое анимация и эффекты при прокрутке страницы

Создание анимации при прокрутке страницы при помощи jQuery. Введение в анимации прокрутки на основе jQuery Что такое анимация и эффекты при прокрутке страницы

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

А теперь давайте посмотрим как выглядит сама структура подгружаемых блоков в HTML:

Как видите, что код очень простой.

CSS

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

Hidden{ opacity:0; } .visible{ opacity:1; }

jQuery

Теперь нам нужно добавить скрипт , который запустить весь этот не сложный двигатель. Вот именно в этом коде мы будем использовать тот класс который отвечает за один из многих типов анимации в Animate.css, например это будет fadeIn, соответственно код будет иметь такой вид:

JQuery(document).ready(function() { jQuery(".post").addClass("hidden").viewportChecker({ classToAdd: "visible animated fadeIn", offset: 100 }); });

Работает данный скрипт следующим образом: если наш блок находится в невидимом поле браузера ему присваивается класс hidden, который скрывает наш блок, после того как наш блок только доходит видимой части окна ему тут же присваивается класс visible вместе с классом от Animate.css, который добавляет красивую анимацию при появлении. Вот и весь секрет:)

Надеюсь Вам понравился данный урок. Пока:)

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

Раньше я писал об интерактивных лендингах. Обязательно посмотрите данную подборку:

Пару слов о том, чем анимация при прокрутке на сайтах в данной подборке отличается от анимации, которая чаще всего встречается на просторах рунета:

Обычно, когда Вы прокручиваете страницу, элемент появляется полностью. Например, такую анимацию можно сделать с помощью плагина Wow.js. Также есть аналоги, где элемент появляется каждый раз, когда пропадает с экрана, который видит пользователь.

А здесь рассмотрены примеры сайтов, где анимация элементов напрямую зависит от прокрутки экрана. То есть, элемент появляется ровно настолько, насколько человек прокрутил экран. Идет интерполяция значений.

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

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

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

1. Appliancetecltd.com

Анимация на этом сайте является основой. Потому что блоки появляются только тогда, когда мы прокручиваем страницу. Если мы прокручиваем страницу немного вверх, то анимация идет в обратном направлении.

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

По сравнению с сайтами, которые Вы увидите ниже, этот довольно маленький, но анимация блоков выглядит очень эффектно.

2. Lempens-design.com

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

Но больше всего на этом сайте бросаются в глаза изображения, которые размещаются в конце блока. Хотя они полностью белые, но из-за красивого фонового изображения они прекрасно дополняют блок.

3. Pedrolandaverde.com

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

Как вы уже заметили (если зашли на этот сайт), кроме крутящихся шестеренок здесь есть еще несколько анимированных изображений. Но их не очень много. И такая анимация действительно приятна и интересна. Советую взять на вооружение данную концепцию.

4. InfoQuest

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

Идея классная, в небольшом масштабе можно такое реализовать и на лендинге. Главное, сделать это действительно тематично для лендинга.

5. Sustainability.bam.co.uk

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

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

6. Makeyourmoneymatter.org

Инфографикой на сайте уже никого не удивишь. Даже той инфографикой, которая занимает все пространство страницы. А вот этот сайт — отличный пример анимации инфографики при прокрутке страницы. Согласитесь, такая инфографика действительно круто смотрится!

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

7. Merry Сhristmallax

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

8. Fluger.com

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

9. Сoffee

Хотите узнать каким образом делают кофе? Тогда просто прокрутите данный лендинг до самого конца. Даже не зная английского можно понять то, о чем идет речь на этой странице. Все изображения настолько красочны и хорошо выполнены, что создается ощущение просмотра видеоролика. Но только это "видеоролик" с одним преимуществом… Вы полностью управляете им 😉 .

10. Kaipoche.co

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

11. Buntspenden

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

12. KIA

Анимация на сайте KIA также создана красиво, но загрузка сайта осуществляется очень долго. А если интернет слабенький, то время загрузки может доходить до 2-3 минут. Вряд ли пользователи будут ждать столько времени, скорее всего, они закроют страницу с данным сайтом.

13. Dangersoffracking

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

14. Everylastdrop

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

15. Arnold Clark

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

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

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

Шаг 1

Как всегда, для того чтобы работала библиотека jQuery , надо в шапке перед закрывающимся head или в подвале перед закрывающимсяbody подключить библиотеку.

Шаг 2

//Сюда код

Или создайте файл, например - scriptviewport.js и подключите его.

Внутри тегов или файла добавляем следующий код:

Function(a){a.fn.viewportChecker=function(b){var c={classToAdd:"visible",classToRemove:"invisible",offset:100,repeat:!1,invertBottomOffset:!0,callbackFunction:function(a,b){},scrollHorizontal:!1};a.extend(c,b);var d=this,e={height:a(window).height(),width:a(window).width()},f=-1!=navigator.userAgent.toLowerCase().indexOf("webkit")?"body":"html";return this.checkElements=function(){var b,g;c.scrollHorizontal?(b=a(f).scrollLeft(),g=b+e.width):(b=a(f).scrollTop(),g=b+e.height),d.each(function(){var d=a(this),f={},h={};if(d.data("vp-add-class")&&(h.classToAdd=d.data("vp-add-class")),d.data("vp-remove-class")&&(h.classToRemove=d.data("vp-remove-class")),d.data("vp-offset")&&(h.offset=d.data("vp-offset")),d.data("vp-repeat")&&(h.repeat=d.data("vp-repeat")),d.data("vp-scrollHorizontal")&&(h.scrollHorizontal=d.data("vp-scrollHorizontal")),d.data("vp-invertBottomOffset")&&(h.scrollHorizontal=d.data("vp-invertBottomOffset")),a.extend(f,c),a.extend(f,h),!d.hasClass(f.classToAdd)||f.repeat){String(f.offset).indexOf("%")>0&&(f.offset=parseInt(f.offset)/100*e.height);var i=f.scrollHorizontal?Math.round(d.offset().left)+f.offset:Math.round(d.offset().top)+f.offset,j=f.scrollHorizontal?i+d.width():i+d.height();f.invertBottomOffset&&(j-=2*f.offset),g>i&&j>b?(d.removeClass(f.classToRemove),d.addClass(f.classToAdd),f.callbackFunction(d,"add")):d.hasClass(f.classToAdd)&&f.repeat&&(d.removeClass(f.classToAdd),f.callbackFunction(d,"remove"))}})},a(document).bind("touchmove MSPointerMove pointermove",this.checkElements),a(window).bind("load scroll touchmove",this.checkElements),a(window).resize(function(b){e={height:a(window).height(),width:a(window).width()},d.checkElements()}),this.checkElements(),this}}(jQuery);

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

Шаг 3

После подключения скрипта задержки, подключаем еще один маленький скрипт, который задает настройки:

jQuery(document).ready(function() { jQuery(".elementanm").addClass("hidden").viewportChecker({ classToAdd: "visible animated slideRight", offset: 100 }); });

В третей строке указан в скобках класс - elementanm . Этот класс нужно будет присваивать всем блокам и элементам, которым Вы захотите присвоить анимацию. В четвертой строке указан класс - slideRight . Это класс анимации. Чтобы задать нужную анимацию и нужный класс, Вам поможет прошлая статья, о которой я упомянул в самом начале. В нашем случаи это будет выезд вправо.

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

jQuery(document).ready(function() { jQuery(".blockanm").addClass("hidden").viewportChecker({ classToAdd: "visible animated slideLeft", offset: 100 }); });

Шаг 4

Как упомянул в предыдущем шаге, нужно элементам задать класс elementanm . В HTML разметке примерно будет так:

Если у Вас уже присвоен элементу класс, то просто добавьте через пробел, например:

Шаг 5

И последним, что нужно сделать - задать CSS стили. Сначала пропишем стили анимации. Берем их с предыдущей статьи о которой уже упоминал в этой статье. Я беру анимацию - выезд вправо.

/*Анимация вправо*/ .slideRight{ animation-name: slideRight; -webkit-animation-name: slideRight; animation-duration: 4s; -webkit-animation-duration: 4s; animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; visibility: visible !important; } @keyframes slideRight { 0% { transform: translateX(-150%); } 100% { transform: translateX(0%); } } @-webkit-keyframes slideRight { 0% { -webkit-transform: translateX(-150%); } 100% { -webkit-transform: translateX(0%); } }

Как видите, стили анимации имеют класс slideRight, поэтому, этот класс и прописан в скрипте в шаге №3. Также есть значение 4s - это время анимации и равно 4 секундам. Теперь добавим стили для того, чтобы элемент, сначала был невиден.

Hidden{ opacity:0; } .visible{ opacity:1; }

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

На этом все, спасибо за внимание. 🙂

Мы делали анимацию элементов, используя библиотеку animate.css . CSS анимация отрабатывала сразу, после загрузки страницы и останавливалась, что является большим недостатком, если страница длинная.

Демо-пример с animate.css

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

Как гласит народная мудрость, если мало одной библиотеки, то добавь ещё одну.

Подключение плагина wow.js

Сайт: https://github.com/matthieua/WOW

Нужно сделать так, чтобы анимация срабатывала только тогда, когда мы прокручиваем страницу. Для этого и существует плагин wow.js , для работы которого не нужен jQuery . Обратите внимание, что файл animate.css , тоже должен быть подключен и классы у тегов прописаны, об этом было сказано в начале статьи.

Запомните! Animate.css и wow.js работают в паре!

Независимо от способа подключения, прописываем ссылку на JS файл перед закрывающим тегом body , в теге script . Запускает плагин функция - new WOW().init()

Подключение через CDN

new WOW().init();
Подключение через скачивание архива

Скачиваете архив с github и перекладываете файл wow.min.js из скачанной архивной папки dist папку js с вашим проектом.



new WOW().init();

Чтобы анимация на сайте сработала, необходимо добавить к тегам элементов, которые собираетесь анимировать - класс wow , вместо класса animated . Замена классов касается тех, кто на сайте использовал только одну библиотеку animate.css , но решил добавить ещё плагин wow.js . Если вы сразу установили оба файла, то просто прописываете wow и название анимации.

Было так:


А стало так:

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

Дополнительные опции

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

Атрибут data-wow-duration задает продолжительность анимации в секундах, иногда необходимо замедлить анимацию, сделать её более плавной. Атрибут data-wow-offset устанавливает на каком расстояние от нижнего края браузера, следует запустить анимацию.

Допустим, вы хотите, чтобы анимация длилась 1 секунду. Добавляете к классу тега соответствующий параметр.

How it works

Демо-пример с animate.css+wow.js

Где на практике лучше всего применять комбинацию animate.css + wow.js ? Там, где вы активно продвигаете товар или услугу, такая подача информации привлечет больше клиентов. Самый главный потребитель анимаций при прокручивании страницы – это лендинг. Есть одно но, прежде чем повесить на него анимацию, надо сперва научиться профессионально создавать лендинги, хотя бы из этого видеокурса .Обратите внимание, как привлекательно анимирована сама продающая страница видео-курса.

Лучшие статьи по теме