Интернет меняется каждый день. Одни технологии и методы возникают, другие исчезают. По этой причине веб-дизайнеры и front-end разработчики должны быть в курсе последних тенденций в веб-дизайне.
Parallax-прокрутка, фиксированные заголовки, плоский дизайн, одностраничные сайты и CSS-анимация некоторые из самых горячих веб-тенденций на текущий момент.
В этом уроке мы рассмотрим создание анимации и эффектов при прокрутке страницы с помощью CSS и jQuery.
Четыре эффекта, которые мы будем создавать можно увидеть на этой странице.
Примечание: Код, используемый в этом уроке можно было бы улучшить при помощи кэширования объектов и использования CSS анимации вместо метода jQuery 'animate()', но для простоты мы сконцентрируемся в первую очередь на идее.
Подобная анимация и эффекты новый, набирающий популярность метод, который дает front-end разработчикам возможность создавать мультимедийные и интерактивные веб-проекты. Когда пользователь прокручивает страницу вниз, разработчики могут легко манипулировать объектами с помощью CSS и jQuery.
Для того чтобы обнаружить прокручивает ли пользователь страницу вниз, мы используем jQuery-событие scroll()
.
После того, как мы узнаем, что пользователь прокручивает страницу, мы можем получить вертикальное положение полосы прокрутки с помощью метода scrollTop()
и применить нужные эффекты:
$(window).scroll(function() { if ($(this).scrollTop() > 0) { // создаем эффекты и анимацию } });
Если мы заинтересованы в создании адаптивных эффектов (оптимизированных под разные разрешения экрана), то мы должны определить следующие свойства:
width
– ширина окна браузера.height
– высота окна браузера.Без определения этих свойств мы создадим эффекты которые будут "статичными" и не будут работать правильно, если пользователь изменит размер окна горизонтально или вертикально. Мы можем легко получить значения этих свойств с помощью методов width() и height().
Следующий фрагмент кода показывает все необходимые проверки, которые мы должны принять во внимание, чтобы создать эффекты при прокрутке страницы.
$(window).scroll(function() { if ($(this).width() < 992) { if ($(this).height() <= 768) { if ($(this).scrollTop() < 500) { // создаем эффекты } if ($(this).scrollTop() > 1000) { // создаем эффекты } } } });
Теперь, когда мы рассмотрели основы создания подобных эффектов, давайте посмотрим их в действии, на четырех различных примерах.
Этот эффект срабатывает, когда верхнее положение полосы прокрутки окна превышает 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(); }
Чтобы увидеть эффект в действии посмотрите демонстрацию на CodePen.
Следующий эффект зависит не только от верхней позиции полосы прокрутки браузера, но и от ширины окна. В частности, мы делаем следующие предположения:
Вышеупомянутые предположения реализованы в следующем фрагменте кода:
if ($(window).width() <= 549) { if($(window).scrollTop() > 600) { // анимация, которая должны быть выполнена firstAnimation(); } } else if ($(window).width() > 549 && $(window).width() <= 991) { if ($(window).scrollTop() > 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); } ); };
Код выше анимирует свойства непрозрачности, высоту и ширину для элемента .clients-info
. Чтобы увидеть этот эффект в действии, смотрите демонстрацию на CodePen.
Третий эффект зависит также от верхней позиции полосы прокрутки окна и от ширины окна. В частности, мы делаем следующие предположения:
И вот код:
if ($(window).width() <= 549){ if ($(window).scrollTop() > 1750) { secondAnimation(); } } else if ($(window).width() > 549 && $(window).width() <= 991) { if ($(window).scrollTop() > 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
, а затем меняет цвет фона дочерних элементов h4
. Чтобы увидеть эффект в действии, смотрите демонстрацию на CodePen.
Этот эффект также зависит от верхней позиции полосы прокрутки и ширины окна. Более конкретно:
Это реализовано следующим кодом:
if ($(window).width() <= 549) { if ($(window).scrollTop() > 3500) { thirdAnimation(); } } else if ($(window).width() > 549 && $(window).width() <= 991) { if ($(window).scrollTop() > 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
.
Чтобы увидеть эффект в действии, смотрите демонстацию на CodePen.
Я надеюсь, что показаные здесь четыре примера помогут вам понять как можно создавать различные эффекты и анимацию при прокрутке страницы. Если у вас есть мысли о используемом коде, или знаете какие-либо хорошие примеры или демонстрации подобных эффектов, не стесняйтесь поделиться ими в комментариях.
© 2008 - 2024 Webmasters.BY Все права защищены
Новый комментарий