Эффекты появления элементов при прокрутке страницы. Создание анимации при прокрутке страницы при помощи jQuery. Подключение через CDN

Мы делали анимацию элементов, используя библиотеку 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 ? Там, где вы активно продвигаете товар или услугу, такая подача информации привлечет больше клиентов. Самый главный потребитель анимаций при прокручивании страницы – это лендинг. Есть одно но, прежде чем повесить на него анимацию, надо сперва научиться профессионально создавать лендинги, хотя бы из этого видеокурса .Обратите внимание, как привлекательно анимирована сама продающая страница видео-курса.

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

Как же сделать так чтобы анимация запускалась при прокрутке страницы? Об сегодня мы этом и поговорим в нашей статье. Но для начала рекомендуем вам прочитать этот материал . В нем вы узнаете про файл animate.css который позволит вам анимировать ваши элементы и который является неотъемлемой частью нашего сегодняшнего материала.

Итак, для запуска анимации при прокрутки нам понадобиться небольшая JavaScript библиотека под названием WOW.js . Она имеет небольшой набор функций, параметров и дополнительных настроек. Одним из ее плюсов есть то что для ее использования не нужно подключать библиотеку JQuery. В результате что мы получаем, amimate.css файл с набором анимаций и wow.js файл который берет эту анимацию и запускает ее при прокрутке.

Давайте перейдем к подключению этой библиотеки на свой сайт.

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

Первым делом у вас должна быть подключена сама анимация animate.css.

Соответственно вторым пунктом будет подключение WOW.js. Для того чтобы ее активировать нужно, прописать еще дополнительно несколько строк.


new WOW().init();

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


Ваш контент

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

Дополнительные параметры

data-wow-duration: Изменить длительность анимации;

data-wow-delay: Задержка перед началом анимации;

data-wow-offset: Расстояние для запуска анимации (от нижнего края браузера);

data-wow-iteration: Сколько раз анимация повторяется?


Ваш контент


Ваш контент

При инициализации объекта можно передать объект с параметрами:

Настройка параметров

boxClass: класс для wow-объектов;

animateClass: класс для срабатывания CSS анимации ("animated" для animate.css);

offset: аналогично data-wow-offset, только в глобальном масштабе;

mobile: включить/выключить WOW.js на мобильные устройства.

live: постоянная проверка новых WOW элементов на странице.

wow = new WOW(
{
boxClass: "wow", // default
animateClass: "animated", // default
offset: 0, // default
mobile: true, // default
live: true // default
}
wow.init();

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

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

В этой статье мы рассмотрим анимации прокрутки страницы и эффекты на основе CSS и jQuery.

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

Используемый в этом примере код можно улучшить, применив кеширование объектов, и использовав CSS анимации вместо метода animate() библиотеки jQuery, но для упрощения объявления объектов повторяются, а также все описывается на основе jQuery, чтобы сконцентрировать внимание на концепции.

Что такое эффекты и анимация прокрутки?

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

Для того, чтобы определить, прокручивает ли пользователь страницу, мы используем jQuery событие scroll() .

Зная, что пользователь прокручивает страницу, мы можем определить позицию полосы прокрутки по вертикали с помощью jQuery метода scrollTop() , и применить желаемый эффект:

$(window).scroll(function() { if ($(this).scrollTop() > 0) { // apply effects and animations } });

Являются ли они адаптивными?

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

  • Свойство окна браузера width ;
  • Свойство окна браузера height .
  • Без этих свойств наши эффекты прокрутки будут “статичными”, и не будут правильно работать при изменении пользователем размера окна по вертикали или по горизонтали.

    Эти значения легко можно получить с помощью jQuery методов width() и height() .

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

    $(window).scroll(function() { if ($(this).width() < 992) { if ($(this).height() 1000) { // apply effects } } } });

    Теперь, когда мы определились с основами эффектов прокрутки, давайте посмотрим на них в действии на основе четырех примеров.

    Для упрощения мы фокусируемся только на проверке того, как эффекты будут меняться в зависимости от различных значений свойств окна width и height .

    Пример №1

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

    If ($(window).scrollTop() > 60) { $(".banner h2").css("display", "none"); $(".banner .info").css("display", "block"); } else { $(".banner h2").css("display", "block"); $(".banner .info").css("display", "none"); }

    Вышеприведенный код прячет элемент h2 из элемента с классом.banner , и отображает дочерний элемент.info , который изначально скрыт.

    Этот код также можно было написать следующим образом:

    If ($(window).scrollTop() > 60) { $(".banner h2").hide(); $(".banner .info").show(); } else { $(".banner h2").show(); $(".banner .info").hide(); }

    Пример №2

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

    • Ширина окна составляет 549px или менее. В этом случае анимация запускается только в том случае, когда позиция полосы прокрутки превышает 600px.
    • Ширина окна находится в промежутке между 550px и 991px. В этом случае анимация запускается только тогда, когда положение полосы прокрутки превышает 480px.
    • Ширина окна больше 991px. В этом случае анимация запускается только когда положение полосы прокрутки превышает 450px.

    If ($(window).width() 600) { // запускаемая анимация firstAnimation(); } } else if ($(window).width() > 549 && $(window).width() 480){ // запускаемая анимация firstAnimation(); } } else { if ($(window).scrollTop() > 450) { // запускаемая анимация firstAnimation(); } }

    Код запускаемой анимации выглядит следующим образом:

    Var firstAnimation = function () { $(".clients .clients-info").each(function () { $(this).delay(500).animate({ opacity: 1, height: "180", width: "250" }, 2000); }); };

    Вышеприведенный код анимирует свойства opacity , height и width элементов.clients-info .

    Пример №3

    Третий эффект зависит не только от позиции полосы прокрутки, но также и от ширины окна. В частности, есть следующие условия:

    • Ширина окна составляет 549px или менее. В этом случае анимация запускается только в том случае, когда позиция полосы прокрутки превышает 1750px;
    • Ширина окна находится в промежутке между 550px и 991px. В этом случае анимация запускается только тогда, когда положение полосы прокрутки превышает 1150px;
    • Ширина окна больше 991px. В этом случае анимация запускается только когда положение полосы прокрутки превышает 850px.

    Код для вышеприведенных случаев представлен ниже:

    If ($(window).width() 1750){ secondAnimation(); } } else if ($(window).width() > 549 && $(window).width() 1150) { secondAnimation(); } } else { if ($(window).scrollTop() > 850) { secondAnimation(); } }

    Код выполняемой анимации выглядит следующим образом:

    Var secondAnimation = function() { $(".method:eq(0)").delay(1000).animate({ opacity: 1 }, "slow", function() { $(this).find("h4").css("background-color", "#b5c3d5"); }); $(".method:eq(1)").delay(2000).animate({ opacity: 1 }, "slow", function() { $(this).find("h4").css("background-color", "#b5c3d5"); }); $(".method:eq(2)").delay(3000).animate({ opacity: 1 }, "slow", function() { $(this).find("h4").css("background-color", "#b5c3d5"); }); $(".method:eq(3)").delay(4000).animate({ opacity: 1 }, "slow", function() { $(this).find("h4").css("background-color", "#b5c3d5"); }); };

    Вышеприведенный код последовательно изменяет свойство opacity элементов.method , а затем меняет свойство background-color дочерних элементов h4 .

    Пример №4

    Этот эффект зависит не только от позиции полосы прокрутки, но также и от ширины окна. В частности, есть следующие условия:

    • Ширина окна составляет 549px или менее. В этом случае анимация запускается только в том случае, когда позиция полосы прокрутки превышает 3500px;
    • Ширина окна находится в промежутке между 550px и 991px. В этом случае анимация запускается только тогда, когда положение полосы прокрутки превышает 2200px;
    • Ширина окна больше 991px. В этом случае анимация запускается только когда положение полосы прокрутки превышает 1600px.

    Результаты в следующем коде:

    If ($(window).width() 3500) { thirdAnimation(); } } else if ($(window).width() > 549 && $(window).width() 2200) { thirdAnimation(); } } else { if ($(window).scrollTop() > 1600) { thirdAnimation(); } }

    Код анимации следующий:

    Var thirdAnimation = function() { $(".blogs").find("p").delay(1400).animate({ opacity: 1, left: 0 }, "slow"); $(".blogs").find("img").delay(2000).animate({ opacity: 1, right: 0 }, "slow"); $(".blogs").find("button").delay(2500).animate({ opacity: 1, bottom: 0 }, "slow"); };

    Вышеприведенный код последовательно анимирует свойства opacity , left , right и bottom элементов p , img , button .

    Заключение

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

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

    Вот как это будет выглядеть в итоге:

    HTML разметка

    HTML для нашего примера наипростейшее, все что нам нужно это заголовок h1 внутри элемента header . А для наглядности примера добавим картинку с призом к действию =)

    jQuery

    Для начала, давайте добавим стили по-умолчанию, которые улучшают внешний вид заголовка:

    Сразу хочу заметить CSS transition задается в стиле по-умолчанию. Из конструкции свойства transition видно, что мы изменяем все свойства элемента (transition-property — all ), за 0.4 секунды (transition-duration — 0.4s ), с ускорением ease (transition-timing-function — ease ).

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    header.sticky {
    position : fixed ;
    font-size : 24px ;
    line-height : 48px ;
    height : 48px ;
    width : 100% ;
    background : #efc47D ;
    text-align : left ;
    padding-left : 20px ;
    }

    Готово! На основе этого примера Вы можете делать абсолютно любые манипуляции с HTML элементами страницы во время прокрутки, все что потребуется jQuery, CSS и Ваши идеи!

    Давно и уже успели укорениться среди разработчиков.
    Итак. С помощью плагинов, которые представлены в этой подборке, вы сможете создать современный сайт с отличной динамикой. Я думаю, каждый человек, который интересуется разработкой сайтов, видел эти плагины в действии. При прокрутке страницы, блоки, различные элементы или текст плавно появляются , выезжают, крутятся и пр. Как показывает практика, клиентам очень нравятся такие фентифлюшки.
    Внедрить эффекты при скроллинге в страницу не так сложно, как может показаться на первый взгляд. Все что нужно - это качественный плагин и прямые руки. Конечно, начинающий верстальщик может испытывать трудности, но стоит немного посидеть, разобраться в принципах работы и задача покажется очень простой.
    Несмотря на то, что анимация на сайте многим по душе, не стоит переусердствовать, иначе у вас получится перегруженная, визуально плохо воспринимаемая страница, в которой все внимание будет приковано ко всем этим «свистелкам», а не к информации, которую требуется донести до посетителя. К тому же, чем больше подключено скриптов, тем медленнее работает страница. В старых браузерах все это дело может вовсе не работать. Подключайте эффекты с умом. Зачастую, простого плавного, ненавязчивого появления блоков хватает. Такой эффект придает странице плавности и динамики, делает сайт живым. На своей практике мне пришлось много повидать сайтов с эффектами без чувства меры. От такого просто тошнит - единственное чувство, которое возникает. Но, наверное, разработчики надеялись на «Вау эффект». Итак. Используйте все с умом и в меру!
    Все плагины абсолютно бесплатны , но я бы рекомендовал ознакомиться с лицензий, так как в некоторых случаях для использования в коммерческих целях нужно выполнить ряд условий.

    WOW.jsНеплохой плагин для реализации анимации элементов при скроллинге . Он имеет очень много анимированных вариантов появления блоков и довольно легко настраивается. ScrollMagicЕще один популярный плагин, с помощью которого можно реализовать сложную анимацию, которая будет срабатывать при прокрутке ролика мышки . В данном случае, плагин позволяет делать действительно сложные , эффекты движения, смены фона на страница и вообще деформации фигур. ScrollMagic часто используют на промо-сайтах, где требуется много анимировать.

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

    SuperscrolloramaSuperscrollorama - мощный, но тяжелый плагин для создания анимации при прокрутке . В его арсенале имеется множество различных настроек для анимации текста, отдельных DIV элементов, включая эффекты.
    Более детальную информацию можно найти в документации к данному jQuery плагину.

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

    OnePagejQuery плагин OnePage позволяет разбить страницу на отдельные экраны с высотой 100% и анимировать переход по ним. Требуется лишь легкий толчок, чтобы начался скроллинг к следующему экрану. Такой же эффект использовался на промо-сайте 5s.
    Имеются проблемы с , как и практически во всех подобных плагинах. Если текст не помещается по высоте, то он просто обрезается и полоса прокрутки не появляется.

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

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

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

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

    Scrolling Progress BarИнтересное решение, с помощью которого можно показать прогресс прочтения информации на странице. Также есть возможность разбить текст на разделы и все это будет визуально выводиться в любом удобном для вас месте на странице.

    multiScroll.jsmultiScroll.js - это jQuery плагин, похож на два предыдущих плагина скользких экранов , но имеет одно значительное отличие. Если в предыдущих случаях просто перелистывался экран, то этот больше похож на современный слайдер изображений . Экран разделяется на две равных части и левая перелистывается вверх, а правая вниз. Таким образом контент практически разрывается.
    Данный плагин можно использовать, например, для создания портфолио фотографа или дизайнера . Думаю, посетители оценят ваш сайт.

    browserSwipe.jsОчередной полноэкранный скроллинг-плагин , с помощью которого создается эффектный переход по экранам. Среди доступных эффектов - скользящий переход, переход с вращением всего экрана, масштабируемый и горизонтальный скроллинг по экранам. Можно совмещать все эффекты на одной странице.

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



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: