Разное

Animate css при скроллинге: CSS-анимация при прокрутке страницы

11.04.2021

Содержание

Создание анимации при прокрутке страницы при помощи jQuery

Интернет меняется каждый день. Одни технологии и методы возникают, другие исчезают. По этой причине веб-дизайнеры и 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) {
            // создаем эффекты
            }
        }
    }
});

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

Пример #1

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

if ($(window).scrollTop() > 60) {
    $(‘.banner h3’).css(‘display’, ‘none’);
    $(‘.banner .info’).css(‘display’, ‘block’);
} else {
    $(‘.banner h3’).css(‘display’, ‘block’);
    $(‘.banner .info’).css(‘display’, ‘none’);
}

Код выше скрывает дочерний элемент h3 внутри элемента с классом .banner и показывает его дочерний элемент .info, который был первоначально скрыт.

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

if ($(window).scrollTop() > 60) {
    $(‘.banner h3’).hide();
    $(‘.banner .info’).show();
} else {
    $(‘.banner h3’).show();
    $(‘.banner .info’).hide();                              
}

Чтобы увидеть эффект в действии посмотрите демонстрацию на CodePen.

Пример #2

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

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

Вышеупомянутые предположения реализованы в следующем фрагменте кода:

if ($(window).width() <= 549) {
    if($(window).scrollTop() > 600) {
        // анимация, которая должны быть выполнена
        firstAnimation();

    }
} else if ($(window).width() > 549 &amp;&amp; $(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.

Пример #3

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

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

И вот код:

if ($(window).width() <= 549){
    if($(window).scrollTop() > 1750){
        secondAnimation();
    }
} else if ($(window).width() > 549 &amp;&amp; $(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(‘h5’).css(‘background-color’, ‘#b5c3d5’);
        }
    );
   
    $(‘.method:eq(1)’).delay(2000).animate({
                opacity: 1
            }, ‘slow’,
            function() {
                $(this).find(‘h5’).css(‘background-color’, ‘#b5c3d5’);
        }
    );
 
    $(‘.method:eq(2)’).delay(3000).animate({
                opacity: 1
            }, ‘slow’,
            function() {

                $(this).find(‘h5’).css(‘background-color’, ‘#b5c3d5’);
        }
    );
 
    $(‘.method:eq(3)’).delay(4000).animate({
                opacity: 1
            }, ‘slow’,
            function() {
                $(this).find(‘h5’).css(‘background-color’, ‘#b5c3d5’);
        }
    );
};

Код выше последовательно анимирует свойство opacity для элементов .method, а затем меняет цвет фона дочерних элементов h5.

Чтобы увидеть эффект в действии, смотрите демонстрацию на CodePen.

Пример #4

Этот эффект также зависит от верхней позиции полосы  прокрутки и ширины окна. Более конкретно:

  1. Если ширина окна имеет значение меньше или равное 549px, анимация срабатывает только тогда, когда верхнее положение полосы прокрутки окна превышает 3500px.
  2. Если ширина окна имеет значение между 550px и 991px, анимация срабатывает только тогда, когда верхнее положение полосы прокрутки окна превышает 2200px.
  3. Если ширина окна имеет значение большее, чем 991px, анимация срабатывает только тогда, когда верхнее положение полосы прокрутки окна превышает 1600px.

Это реализовано следующим кодом:

if ($(window).width() <= 549) {
    if ($(window).scrollTop() > 3500) {
        thirdAnimation();
    }
} else if ($(window).width() > 549 &amp;&amp; $(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.

Заключение

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

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

Перевод статьи с http://www.sitepoint.com


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

ReactJS и CSS анимация: инструкция к применению

Перед каждой современной IT-компанией рано или поздно возникает задача анимации страниц. На дворе 21 век и по-другому никак. В зависимости от степени тривиальности задачи, мы всегда стараемся найти библиотеку (или решение), предоставляющую максимальный спектр возможностей.

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

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

1. CSS анимация

CSS transitions

Его основное отличие от классического CSS animations состоит в том, что он применяется для переходов. То есть анимируется один раз. Что это значит?

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

Вообще возможность связывать анимации с использованием CSS transition можно посредством обработчика на событие transitionend. Но мы этого делать не рекомендуем, так как keyframes (css animation) намного проще в использовании.

Через transition-property мы указываем, какое свойство будет анимироваться. В нашем случае это background-color.

Далее transition-duration указывает на продолжительность анимации (3 секунды).

Теперь любое изменение фонового цвета у этого класса будет анимироваться в течение 3 секунд. Также заметим, что через ключевое слово transition можно указать через пробел все параметры по порядку. Их мы рассмотрим ниже.

Transition-property — здесь можно указать почти любое CSS свойство, например, margin-left, padding-right, opacity и т.д.

Transition-duration — продолжительность анимации, задается в s (секундах) или ms (миллисекундах).

Transition-delay — время задержки анимации.

Transition-timing-function — временнáя функция, определяющая как процесс анимации будет распределен во времени. Например, будет ли она постепенно ускоряться или замедляться. Самые популярные параметры: ease, ease-in, ease-out, ease-in-out. Также упомянем функцию steps (количество шагов[, start/end]), которая разбивает нашу анимацию на четкое количество шагов. Она используется в основном для исключения плавных переходов (пример: счетчик чисел).

Пример:

CSS animation

Заканчиваем с простыми анимациями и переходим к технологии CSS animation. Что она собой представляет и в чем ее отличия?

Сложные анимации создаются объединением простых с помощью CSS-правила @keyframes. В нем мы задаем «имя» анимации и правила: что, откуда и куда анимировать. Правило @keyframes содержит имя элемента, связывающее его с блоком объявления элемента. Keyframes кадры создаются с помощью ключевых слов “from” и “to” (эквивалентны значениям 0% и 100%) или с помощью процентных пунктов. Их количество не ограничено: задавайте сколько угодно. Также можно комбинировать ключевые слова и процентные пункты. Если кадры имеют одинаковые свойства и значения, их можно объединить в одно объявление:

Если кадры 0% или 100% не указаны, то браузер пользователя создает их, используя вычисляемые (первоначально заданные) значения анимированного свойства. Если у двух ключевых кадров будут одинаковые селекторы, то последующий отменяет действие предыдущего.

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

Пример:

— (1) Имя анимации. Тут мы можем указать любое имя, соответствующее нашему имени в @keyframes. По сути оно будет обращаться туда. В приведенном примере мы указали все параметры в одну строчку. Для уточнения добавим: последний alternate указывает на то, что каждый раз анимация будет менять свое направление.

— (2) В @keyframes блоке мы указываем способ анимации. В данном случаем это будет смещение на определенное число пикселей.

Animate.css

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

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

Для ее применения к элементу (разумеется, после установки), должны быть добавлены два класса: animated и любой другой на выбор — именно он определяет какую анимацию мы используем. На JQuery это будет выглядеть примерно так:

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

Пример:

2. React анимация

Этот пункт будет интересен, в первую очередь, пользователям React. Откровенно говоря, сначала мы его недооценивали. В итоге же стандартная библиотека React существенно упростила нам жизнь.

Чем же она оказалась полезной? Ответим на этот вопрос небольшим обзором двух API для анимации.

ReactCSSTransitionGroup

Небольшой пример, как это выглядит:

Как видите, ReactCSSTransitionGroup оборачивает элемент, который мы собрались анимировать. В transitionName мы присваиваем имя нашей анимации.

Примечание! Распространенная ошибка: выносить ReactCSSTransitionGroup не в рендер самого компонента, а в отдельную функцию. Так оно не работает!

Пример:

Мы можем отлавливать жизненное состояние нашей анимации даже в стилях. Имеется в виду отслеживание того, на каком этапе она находится.

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

Далее (2) мы задаем начальное состояние для момента: когда элемент будет удален из DOM дерева и как именно будут меняться его стили перед удалением.

ReactTransitionGroup

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

Да, это очень похоже на методы жизненных циклов самого React. Здесь используется похожий подход. Перед вами методы из официальной документации:

componentWillAppear() — вызывается в том же время, что и componentDidMount(), при этом блокируя остальные анимации. Выполняется только при первичном рендере TransitionGroup.

componentDidAppear() — вызывается сразу после отработки componentWillAppear(). Вызов происходит с помощью callback функции, переданной в вызванный componentWillAppear().

componentWillEnter() — срабатывает в том же время, что и componentDidMount(), похожа на componentWillAppear(), но в отличии от него не вызывается при первичном рендере элемента.

componentDidEnter() — вызывается сразу после отработки componentWillEnter().

componentWillLeave() — вызывается в тот момент, когда элемент был удален из ReactTransitionGroup. Но он все еще будет виден, так как ReactTransitionGroup придержит его до вызова callback.

componentDidLeave() — вызов происходит сразу после отработки callback функции componentWillLeave(). Срабатывает в то же время, что и componentWillUnmount().

Предлагаем ознакомиться с примером, реализованном на одном из наших проектов.

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

Пока все просто: мы оборачиваем в TransitionGroup то, что анимируется. Чтобы это дало свой эффект и TransitionGroup мог отловить момент, когда наш child элемент появился или исчез из DOM дерева, нам следует поставить флаг (2) isOpenedMenuItemWorks.

Далее посмотрим на манипуляции, которые происходят в самом анимируемом компоненте FadeUpContainer.

Пример показывает, что все child компоненты, находящиеся внутри TransitionGroup, получают в свое пользование методы жизненного цикла для анимации. В данном случае методы componentWillEnter() и componentWillLeave().

В приведенном примере мы использовали библиотеку для анимации gsap. Очень рекомендуем ознакомиться с ее документацией. Эта библиотека позволяет решить массу проблем, связанных с анимацией. Главная особенность ее использования в том, что мы должны дать функции (здесь TweenMax) ссылку на анимируемый элемент.

Догадаться, какие параметры в функции TweenMax и за что отвечают совсем нетрудно. El ссылка на элемент, время исполнения, начальное состояние, конечное состояние + callback + время задержки.

3. Продвинутое использование библиотек для анимации при скроллинге

В этой части статьи мы расскажем о библиотеках, с которыми приходилось сталкиваться на практике. На сегодня — это WOW.js и AOS animate.

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

Для того чтобы AOS заработал, его надо добавить глобально.

Пример:

В принципе все. Можно смело использовать.

А вот еще одна задача: анимация счетчика чисел в определенной части страницы при скроллинге.

Вывод

В заключение отметим, современные технологии предлагают широкий спектр решений для реализации анимаций. Остается лишь подобрать оптимальный вариант под поставленную задачу. Если вам нужна высокая производительность и максимальная гибкость, при отсутствии сложных требований — используйте CSS анимации. В случае сложных требований лучшим выбором станут javascript-based анимации. С ними вы можете реализовать практически любую задачу. Причем, с легкостью и без заметных потерь в производительности.

Если вам понравилась статья, не забудьте поделиться ею в социальных сетях. Всем хорошего дня!

Web-разработка • HTML и CSS

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

Для начала следует скачать и подключить файл animate.css:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Animate</title>
    <link rel="stylesheet" href="css/animate.min.css">
</head>
<body>
    ..........
</body>
</html>

Теперь, чтобы применить анимацию к элементу, добавляем класс animated и класс с названием эффекта, допустим pulse:

<body>
    <h2>Lorem ipsum dolor sit amet</h3>
    <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
    incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis...
    </p>
    <img src="img/picture.jpg" alt=""> <!-- анимация для изображения -->
    <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
    incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis...
    </p>
</body>

Применяем анимацию к элементу с использованием JavaScript:

document.addEventListener('DOMContentLoaded', function () {
    const image =  document.querySelector('img');
    image.classList.add('animated', 'pulse');
});

Добавляем анимацию для всех изображений на странице:

$(document).ready(function() {
    $('img').addClass('animated pulse'); 
});

Чтобы анимация срабатывала при наведении на изображение курсора мыши:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Animate</title>
    <link href="css/animate.css" rel="stylesheet">
    <script src="js/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#gallery > img').hover(
                function() {
                    $(this).addClass('animated pulse');
                },
                function() {
                    $(this).removeClass('animated pulse');
                }
            );
        });
    </script>
</head>
<body>
    <div>
        <img src="img/thumb1.jpg" alt="">
        <img src="img/thumb2.jpg" alt="">
        <img src="img/thumb3.jpg" alt="">
        <img src="img/thumb4.jpg" alt="">
    </div>
</body>
</html>

Анимация при прокрутке страницы

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Animate</title>
    <link rel="stylesheet" href="css/animate.min.css">
    <script src="js/wow.min.js"></script>
    <script>
        new WOW().init();
    </script>
</head>
<body>
    ..........
</body>
</html>

Теперь необходимо добавить к элементам страницы класс wow, который скрывает элемент и класс с названием эффекта, например pulse:

<body>
    <section>
        .....
    </section>
    <section>
        .....
    </section>
    <section>
        .....
    </section>
</body>

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

  • data-wow-duration — продолжительность анимации в секундах
  • data-wow-offset — расстояние от нижнего края браузера для начала анимации
  • data-wow-delay — задержка перед началом анимации
  • data-wow-iteration — сколько раз повторять анимацию
<section data-wow-duration="2s" data-wow-delay="5s">
    .....
</section>
<section data-wow-offset="10" data-wow-iteration="3">
    .....
</section>

Пользовательские настройки:

wow = new WOW({
    boxClass:     'wow',      // default
    animateClass: 'animated', // default
    offset:       0,          // default
    mobile:       true,       // default
    live:         true        // default
});
wow.init();
  • boxClass — имя класса для элементов, которые надо анимировать при прокрутке страницы
  • animateClass — имя класса, которое запускает анимацию (для библиотеки animate.cssanimated)
  • offset — расстояние от нижнего края браузера до верхнего края скрытого блока wow
  • mobile — включение или отключение анимации для мобильных устройств
  • live — отслеживать появление новых wow-элементов на странице (например, загруженных с помощью ajax)
В браузерах Chrome и Firefox анимация может не работать, если в настройках Windows отключена настройка «Показывать анимацию в Windows».

Поиск: CSS • HTML • JavaScript • Верстка • Анимация • animate.css • wow.js

Плавный скроллинг при помощи CSS

В прошлом году, создавая страницу продукта FilePond, я наткнулся на API scrollIntoView. Это удобный метод указывает браузеру прокрутить элемент в окне просмотра.

Эта статья была изначально опубликована в моем личном блоге

API scrollIntoView можно назначить анимацию прокручиваемой части, добавив свойство поведения в объект scrollIntoViewOption.

Я быстро запрыгнул на своего JavaScript-коня и написал крошечный скрипт для автоматического определения щелчков на якорях, чтобы браузер оживлял переход к элементу привязки. Этот переход действительно может дезориентировать пользователя, поэтому анимация этого процесса значительно улучшит UX.

В настоящее время scrollIntoViewOptions работает только в Firefox и Chrome.

Я разместил сообщение в Твиттере .

Затем Hans Spieß написал, что это также можно сделать с помощью CSS, ЧТО !?

Оказывается, есть свойство CSS  scroll-behavior, которому нужно задать параметр smooth. Похоже на awesome: yes-please. Если мы хотим установить плавную прокрутку контейнеру, мы просто можем установить свойство scroll-behavior и все готово.

Вот мое новое демо, где я использую только лишь CSS

Прежде чем мы начнем сходить с ума и пихать это на все сайты давайте подумаем о нескольких моментах.

Значение расстояния прокрутки

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

Мы могли бы использовать Smart CSS для обнаружения длинных страниц и условно применить стиль плавной прокрутки.

Легкость просмотра

Пользователи просто могут заскучать при такой анимации и захотеть спать. Решение здесь будет такое — обернуть свойство CSS в prefers-reduced-motion медиа-запрос. Но, к сожалению, Chrome не поддерживает это свойство. Safari поддерживает, но Safari не поддерживает плавную прокрутку.

Заключение

При выборе новой функциональности мы не должны сразу бежать за JavaScript. Сначала можно быстро выяснить, можно ли это сделать и с помощью CSS. Свойство scroll-behavior может быть хорошим улучшением UX, но обязательно отключите его на очень длинных страницах и дайте пользователю возможность отключить его, чтобы сохранить легкое чтение ваших страниц.

Перевод статьи: CSS Smooth Scrolling

20+ Бесплатных библиотек CSS анимаций – Dobrovoimaster

Сегодня мы рассмотрим лучшие библиотеки анимаций CSS, которые помогут вам создать потрясающие эффекты для различных элементов вашего сайта.
Несомненно анимация добавляет движухи в интернет пространство, сайты где используются эффекты анимации, оживают поднимаясь на уровень выше, главное не переусердствовать, а использовать анимацию там где она будет выглядеть логично, не стоит навешивать эффектные плюшки на каждую закорючку интерфейса.
Наверняка, вы часто слышали термины «переход» и «трансформация»? Переходы CSS — это плавное изменение одного состояния элемента на другое, при наступлении определенного события, которое назначается соответствующим псевдоклассом, например при наведении :hover.

На данный момент мы можем использовать анимацию CSS для любых элементов, а также псевдоэлементов :before и :after. При этом, не стоит забывать, что, например, псевдокласс :hover не работает на некоторых мобильных устройствах, например, таких как iPhone или Android.

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


 

1. MOTION UI

Motion UI — это библиотека Sass для быстрого создания переходов и анимаций CSS, изначально связанная с Foundation for Apps, затем выделенная в отдельный проект, который был запущен раньше чем запустили Foundation for Sites 6.
При просмотре демо кликайте на класс и смотрите анимацию Yeti!
 

 


 

2. Animista

Animista — это место, где вы можете работать с коллекцией готовых анимаций CSS, настраивать параметры и загружать только те, которые вы фактически будете использовать.
 

 


 

3. Animate.css

Animate.css — это коллекция кросс-браузерных анимаций CSS, которые вы можете использовать в своих веб-проектах.
 

 


 

4. Vivify

Vivify — Относительно новая и абсолютно бесплатная библиотека CSS-анимации. Работать с этой библиотекой очень просто, скачиваете, заливаете к себе на сайт, подключаете файл vivify.min.css к документу, добавляете класс vivify к элементу, который вы хотите оживить, здесь же прописываете имя класса соответствующего тому или иному виду анимации и всё, любуетесь результатом. Вся необходимая инфа по подключению и список имен классов упакована в архив.
 

 


 

5. Woah.css

Библиотека Woah.css позволяет применять эксцентричные, эффектные и в чём то даже сумасшедшие, анимации CSS3 для любых элементов html. Подобно Animate.css, библиотека проста в использовании и легко модернизируется.
 

 


 

6. Hexa

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

 


 

7. Magic Animations

Magic Animations — небольшая библиотека анимации специальных эффектов CSS3.
 

 


 

8. CssAnimation

Cssanimation.io — Современная, управляемая библиотека эффектных анимаций CSS3, для работы с которой, достаточно базовых знаний HTML и CSS3. Подробнейшая документация представлена в репозитории проекта на GitHub.
 

 


 

9. CSShake

CSShake — это проект, полностью написанный в CSS, который обеспечивает серию довольно таки специфичных анимаций, в виде различных вариантов эффектов дрожи или тряски, применимых практически ко всем элементам DOM.
 

 


 

10. All Animation Css3

Вся библиотека представляет собой фреймворк css3, созданный с упором на анимацию 3D и кросс-браузерность. Недавно было выпущено обновление всей библиотеки анимации, в которую были добавлены несколько новых анимированных компонентов, выполненных в CSS3 / Stylus.
 

 


 

11. Effeckt.css

Большая библиотека эффектных переходов и анимаций CSS, для различных элементов сайта.
 

 


 

12. Tuesday

Это причудливая библиотека анимации CSS, разработанная в Shakr. Есть много других библиотек анимаций CSS, но многие из разработанных эффектов, просто слишком длительны для переходов элементов интерфейса. Tuesday обеспечивает более продуманный набор эффектов, которые могут легко интегрироваться в более широкий спектр веб-сайтов или веб-приложений, добавляя движузи различным элементам пользовательского интерфейса.
 

 


 

13. Morf.js

JavaScript библиотека, позволяющая воспроизводить переходы CSS3 с аппаратным ускорением и с настраиваемыми пользовательскими функциями.
 

 


 

14. Ceaser

Ceaser — это очень простой инструмент для создания анимаций CSS, которые вы можете легко использовать в своих проектах.
 

 


 

15. VHS.css

Описание
 

 


 

16. ReboundGen

Генерирует ключевые кадры анимации элемента в SASS / CSS3 используя Rebound.js от Facebook. Похоже на Animate.css.
 

 


 

17. WickedCSS

Не большая библиотека анимации CSS3. библиотека включает в себя набор эффектных анимаций, которые применимы к разным элементам веб-сайта.
 

 


 

18. tScroll

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

 


 

19. Motion CSS

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

 


 

20. Rocket

Rocket — простой инструмент для создания веб-анимаций. Создает анимацию перехода из одного элемента в другой. Вся необходимая документация по работе с библиотекой прилагается.
 
Картинка

 


 

С Уважением, Андрей .

Буду всем признателен, если поддержите проект — добавив блог в исключения AdBlock и поделитесь ссылкой на запись в своих соц-сетях:

LazyLoad появление изображений при скроллинге

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

 

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

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

Шаг 1. HTML

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

<img src=»img/400″>

У нас будет два разных класса align-left slide-in служит для изображений, которые появляются слева на право, align-right slide-in для изображений с права налево.

Шаг 2. CSS

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

.align-left {

float:left;

margin-right:20px;

transform: translateX(-110%);

}

и для изображений которые появляются справа:

.align-right {

float:right;

margin-left:20px;

transform: translateX(110%);

}

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

Шаг 3. JS

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

‘use strict’;

function debounce(func, wait, immediate) {

var timeout;

return function () {

var context = this,

args = arguments;

var later = function later() {

timeout = null;

if (!immediate) func.apply(context, args);

};

var callNow = immediate && !timeout;

clearTimeout(timeout);

timeout = setTimeout(later, wait);

if (callNow) func.apply(context, args);

};

};

var sliderImages = document.querySelectorAll(‘.slide-in’);

function checkSlide(e) {

// цикл по каждому изображению

// выяснить, где он должен быть показан

// не менее 50% его высоты

sliderImages.forEach(function (sliderImage) {

var slideInAt = window.scrollY + window.innerHeight — sliderImage.height / 2;

// нижняя часть изображения

var imageBottom = sliderImage.offsetTop + sliderImage.height;

// Половина пути в изображениях

var isHalfShown = slideInAt > sliderImage.offsetTop;

var isNoScrolledPast = window.scrollY < imageBottom;

if (isHalfShown && isNoScrolledPast) {

sliderImage.classList.add(‘active’);

} else {

sliderImage.classList.remove(‘active’);

}

});

}

window.addEventListener(‘scroll’, debounce(checkSlide));

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

Вот и все. Готово!

Читайте также:

Рисование элементов сайта при прокрутке страницы

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

Интерактивные элементы на странице:

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

Посмотрите пример самостоятельно и медленно прокрутите страницу вниз:

Посмотреть примерСкачать

Это лишь небольшой элемент лендинга. Как создать лендинг с полного нуля, я рекомендую свой мини-курс: «Лендинг за 60 минут».

Я сделал скриншот элемента, который еще появился не до конца:

Как сделать такой дизайн лендинга?

1 Преобразование в SVG Path

Иконки, которые Вы видели, это не изображения. И нам необходимо преобразовать иконки в данный формат. Как это сделать я рассказал в одной из статей ранее:

То есть иконку в формате SVG нам необходимо преобразовать в формат SVG Path с помощью сервиса lazylinepainter.info.

Сервис нам сгенерировал большой JS код, который нам пригодится. Поэтому идем дальше к разметке HTML.

2 HTML структура

Пример иконки монитора:

HTML КОД

1
2
3
4
5
6
7
8
9
<div>
    <div></div>
    <svg version="1.1" viewBox="-7 0 430 430" xmlns="http://www.w3.org/2000/svg">
        <path fill="none" stroke="#000000" stroke-width="10" d="M392.997,28.338h30c-11.046,0-20,8.954-20,20v234c0,11.046,8.954,20,20,20h239.499v45.32h-54.283     c-10.201,0-18.5,8.299-18.5,18.5s8.299,18.5,18.5,18.5h302.566c10.201,0,18.5-8.299,18.5-18.5s-8.299-18.5-18.5-18.5h-54.283     v-45.32h239.498c11.047,0,20-8.954,20-20v-234C412.997,37.292,404.044,28.338,392.997,28.338z M382.997,272.338h40v-214h452.997     V272.338L382.997,272.338z"></path>
        <path fill="none" stroke="#000000" stroke-width="10" d="M62.999,146.276h387c2.762,0,5-2.239,5-5V86.269c0-2.761-2.238-5-5-5h-287c-2.762,0-5,2.239-5,5v55.008     C57.999,144.038,60.237,146.276,62.999,146.276z"></path>
        <path fill="none" stroke="#000000" stroke-width="10" d="M349.999,165.164h385.28c-2.19,0-3.966,1.776-3.966,3.966v76.333c0,2.19,1.773,3.966,3.966,3.966h64.719     c2.19,0,3.966-1.774,3.966-3.966v-76.333C353.965,166.938,352.189,165.164,349.999,165.164z"></path>
        <path fill="none" stroke="#000000" stroke-width="10" d="M251.78,165.164H62.999c-2.19,0-3.967,1.776-3.967,3.966v76.333c0,2.19,1.776,3.966,3.967,3.966h351.78     c2.189,0,3.965-1.774,3.965-3.966v-76.333C255.745,166.938,253.971"></path>
    </svg>
</div>

Несколько слов по структуре:

  • Строки: с 1 по 9 — полный блок с иконкой.
  • Строка: 2 — блок-триггер, с которого начинается анимация соответствующей иконки.
  • Строки: с 4 по 7 — отдельные части иконки (координаты).

Также у каждого тега <path> есть атрибут «viewbox», который отвечает за масштаб иконки. Первые две цифры — это смещение по оси X и оси Y, а вторые две — это размер иконки (его можно узнать из сгенерированного кода, который дает сервис lazylinepainter.info).

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

Сервис генерирует атрибут «path», из которого нам необходимо скопировать всё и вставить в атрибут «d» тега <path>. Как видите, иконка монитора состоит из 4-х тегов <path>, потому что сервис lazylinepainter.info сгенерировал четыре блока с координатами. Затем для каждого блока необходимо задать уникальный атрибут <id>, с помощью которого мы будем управлять анимацией.

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

Согласен, всё так просто как казалось бы, но эффект то не простой!

3 JS анимация

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

Подключаем все необходимые скрипты:

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

HTML КОД

1
2
3
4
5
<script src="http://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="js/TweenMax.min.js"></script>
<script src="js/animation.gsap.js"></script>
<script src="js/animate-icon.js"></script>

Обратите внимание на последний animate-icon.js. Его мы и будем редактировать, потому что там написана вся анимация для наших иконок. Давайте посмотрим что внутри:

Javascript КОД

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function pathPrepare ($el) {
    var lineLength = $el[0].getTotalLength();
    $el.css("stroke-dasharray", lineLength);
    $el.css("stroke-dashoffset", lineLength);
}
 
var $photoicon1 = $("path#photoicon1");
var $photoicon2 = $("path#photoicon2");
var $photoicon3 = $("path#photoicon3");
 
...
 
// подготовка SVG
pathPrepare($photoicon1);
pathPrepare($photoicon2);
pathPrepare($photoicon3);
 
...
 
// инициализация контроллера
var controller = new ScrollMagic.Controller();
 
// tween "Photoicon"
var tween = new TimelineMax()
    .add(TweenMax.to($photoicon1, 2, {strokeDashoffset: 0, ease:Linear.easeNone})) 
    .add(TweenMax.to($photoicon2, 0.5, {strokeDashoffset: 0, ease:Linear.easeNone}))
    .add(TweenMax.to($photoicon3, 0.5, {strokeDashoffset: 0, ease:Linear.easeNone}));
 
    ...
 
// scene "Photoicon"
var scene = new ScrollMagic.Scene({triggerElement: "#trigger1", duration: 400, tweenChanges: true})
                .setTween(tween)
                .addTo(controller);
 
    ...

Вам лишь при добавлении новой иконки необходимо сделать по аналогии. Я оставил код только для первой иконки с фотоаппаратом. Для остальных Вы увидите аналогичный код в исходниках. Поясню код:

  • Строки: с 1 по 5 — функция, которая отвечает за рисование линий. Здесь ничего менять не нужно.
  • Строки: с 7 по 9 — здесь выбираем все части нашего фотоаппарата. По аналогии добавляется собственные.
  • Строки: с 14 по 16 — подготовка координат SVG Path. Делаете все аналогично.
  • Строки: с 24 по 27 — анимация для каждой из частей иконки. Также всё аналогично делаете для Ваших иконок.
  • Строки: с 32 по 34 — создание новой сцены. Для каждой новой иконки своя собственная сцена.

Ура, это конец!

Вывод

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

Успехов!

С Уважением, Юрий Немец

Повысьте уровень своих сайтов с Animate.css — Scotch.io

Классная анимация и умные микровзаимодействия сейчас в моде. Однако большинство разработчиков знают, как долго и утомительно постоянно писать и переписывать CSS-анимацию. Может возникнуть ощущение, будто вы изобретаете велосипед заново. Разве не было бы неплохо иметь библиотеку обычных анимаций, которые можно было бы использовать в любое время для любого из своих проектов?

Enter Animate.css Коллекция «просто добавляемых CSS-анимаций», созданная Дэниелом Иденом.

с Animate.css, вы можете легко анимировать любой элемент с помощью всего одной строчки кода. Но если вам нужно немного больше фантазии, он также предлагает довольно много вариантов настройки. В этом руководстве мы узнаем, как использовать Animate.css, создав одностраничный веб-сайт. Давайте начнем!

Есть два способа начать работу с Animate.css. Первый способ — скачать с официального сайта. После того, как вы это сделаете, все, что вам нужно сделать, это добавить его в папку проекта и добавить ссылку в HTML-коде.

* Примечание: Animate.css содержит только один файл! Это сводит к минимуму время загрузки и упрощает работу. *

  <заголовок>
  
  

Второй вариант для начала — использовать CDN. Вы можете найти это здесь. Как только вы его получите, вы можете разместить на него ссылку, как и раньше:

  <заголовок>
  
  

И все! Больше никаких настроек не требуется, чтобы начать использовать все потрясающие анимации, которые поставляются с Animate.css. Все, что нам нужно сделать, это добавить немного воды …

Первое, что мы сделаем, это простая статическая анимация, которая активируется сразу при загрузке страницы. Очевидно, что эта анимация должна быть вверху страницы — если только она не повторяется снова и снова. Итак, мы начнем с полноэкранного героя и анимируем текст внутри при загрузке страницы.Вот базовый HTML, который нам нужен:

Изучите Tailwind CSS с нуля
  <заголовок>
  

Animate.css

Повышайте уровень своих сайтов с помощью Animate.css

Теперь все, что нам нужно сделать для анимации двух заголовков, — это дать им анимированные классы и bounceInDown . Первый класс необходим для использования любой анимации Animate.css. Но второй класс — лишь один из многих вариантов, которые мы могли бы здесь использовать.В официальных документах Github есть полный список анимаций, которые вы можете использовать.

  <заголовок>
  

Animate.css

Повышайте уровень своих сайтов с помощью Animate.css

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

  <заголовок>
  

Анимировать.css

Повышайте уровень своих сайтов с помощью Animate.css

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

  1. продолжительность анимации
  2. задержка анимации
  3. количество итераций анимации

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

* Примечание: Большая часть CSS в этих примерах опущена для ясности. Ознакомьтесь с полной демонстрацией стилей стрелок и т. Д. *

  <заголовок>
  

Animate.css

Повышайте уровень своих сайтов с помощью Animate.css

И вот CSS, благодаря которому волшебство происходит до бесконечности:

  / _ Обязательно используйте анимированный класс в вашем селекторе.В противном случае продолжительность анимации не будет работать _ /
header span.animated {
  продолжительность анимации: 2,5 с;
  количество итераций анимации: бесконечно;
}  

И вот ручка, показывающая все это в действии:

Как видите, делать статические анимации очень просто. В следующем разделе мы добавим сложности, используя jQuery для динамического запуска Animate.css.

Первый тип динамической анимации, который мы рассмотрим, — это анимация прокрутки. С помощью jQuery мы можем проверить, находится ли элемент в области просмотра.Затем все, что нам нужно сделать, это добавить к нему наши классы Animate.css. Мы будем использовать три блока текста, каждый со значком, чтобы продемонстрировать это. Вот разметка:

  

Анимация прокрутки

Номер один

Lorem ipsum dolor sit amet, conctetur adipiscing elit. Vestibulum quis lacinia est. Nulla malesuada massa orci, vitae placerat lorem pharetra a.

Номер два

Lorem ipsum dolor sit amet, conctetur adipiscing elit.Vestibulum quis lacinia est. Nulla malesuada massa orci, vitae placerat lorem pharetra a.

Номер три

Lorem ipsum dolor sit amet, conctetur adipiscing elit. Vestibulum quis lacinia est. Nulla malesuada massa orci, vitae placerat lorem pharetra a.

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

 

$ (документ) .ready (функция () {
  
  function isScrolledIntoView (elem) {
    var docViewTop = $ (окно) .scrollTop ();
    var docViewBottom = docViewTop + $ (окно) .height ();

    var elemTop = $ (elem) .offset (). top;
    вар elemBottom = elemTop + $ (elem) .height ();

    return ((elemBottom <= docViewBottom) && (elemTop> = docViewTop));
  }
  
  $ (окно).scroll (function () {
    $ ('. scroll-animations .animated'). each (function () {
      if (isScrolledIntoView (this) === true) {
        $ (это) .addClass ('fadeInLeft');
      }
    });
  });
});  

Еще раз, вот и все! Все, что нам нужно, это простая функция прокрутки, чтобы добавить наши классы в текстовые блоки для создания гладкой анимации прокрутки. А Animate.css сделает все остальное. Вот наше обновленное перо со статической анимацией и анимацией прокрутки:

Теперь обратимся к анимации, запускаемой событием щелчка.

Чтобы проиллюстрировать анимацию щелчка с помощью Animate.css, мы создадим контактную форму. Когда форма будет отправлена, мы воспользуемся jQuery, чтобы проверить ее на пустые поля ввода. Если какие-либо из них пусты, мы дадим им красную рамку и встряхнем, чтобы пользователь знал, что он что-то пропустил. Вот основная разметка для формы:

  

Анимация кликов

<форма>

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

Обратите внимание, как входы не трясутся после первого раза. Это потому, что у них уже есть классы , анимированные и сотрясения . Итак, нам нужен способ удалить эти классы после завершения анимации.Затем мы сможем повторно добавить их позже. И снова на помощь приходит Animate.css! С помощью следующего кода JavaScript мы можем проверить конец нашей анимации, а затем что-то с этим сделать.

* Примечание: Метод .one () по существу идентичен методу .on () . Подробнее о его нюансах можно прочитать здесь. *

  $ ('# myElement'). One ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
    
});  

Теперь, когда у нас есть этот изящный метод jQuery, давайте рассмотрим логику того, что нам нужно сделать.

  1. Нам нужно проверить наличие пустых входов при нажатии кнопки отправки.
  2. Если вход пуст, нам нужно присвоить ему классы .animated , .shake и .form-error (последний предназначен для стилизации границы input ).
  3. Наконец, нам нужно удалить эти классы по окончании анимации.

Для достижения этих трех целей мы создадим функцию «по щелчку» с операторами if для проверки каждого элемента формы.Мы также будем использовать наш прослушиватель событий, чтобы анимацию можно было запускать снова и снова. Собирая все вместе, наш JavaScript будет выглядеть примерно так:

 
$ ('кнопка'). on ('щелчок', function () {
    / _
    Если какой-либо вход пуст, сделайте его рамку красной и встряхните. После завершения анимации удалите классы встряхивания и анимации, чтобы анимация могла повторяться.
    _ /

    
    if ($ ('# имя'). val () === '') {
        $ ('# name'). addClass ('Анимированное дрожание при ошибке формы')
                  .one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
                        $ (this) .removeClass ('анимированное встряхивание');
        });
    } еще {
        $ ('# имя'). removeClass ('ошибка формы');
    }

    
    if ($ ('# email'). val () === '') {
        $ ('# email'). addClass ('анимированное дрожание при ошибке формы')
                   .one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
                        $ (this) .removeClass ('анимированное встряхивание');
        });
    } еще {
        $ ('# адрес электронной почты').removeClass ('ошибка формы');
    }

    
    if ($ ('# сообщение'). val () === '') {
        $ ('# message'). addClass ('Анимированное дрожание при ошибке формы')
                     .one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
                        $ (this) .removeClass ('анимированное встряхивание');
        });
    } еще {
        $ ('# сообщение'). removeClass ('ошибка формы');
    }
});  

Имейте в виду, что класс .form-error просто создает красные границы вокруг полей ввода.Вы можете посмотреть живую демонстрацию, чтобы увидеть это в действии. И это все, что касается анимации щелчка с Animate.css. Очевидно, мы лишь поверхностно коснулись того, что вы можете делать с помощью JavaScript и этих потрясающих анимаций, но я уверен, что ваша голова уже гудит от идей для будущих проектов. Вот обновленный код, показывающий, что у нас есть на данный момент:

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

Если перейти на официальный сайт Animate.css, вы заметите, что есть категория анимаций, помеченная как «специальные». В этой категории есть несколько эффектов, но сейчас я хочу остановиться на петле , в частности, . Вы можете использовать эту анимацию, как и любую другую в библиотеке Animate.css, но она определенно уникальна. Вероятно, легче показать, чем объяснить, что именно он делает. Итак, посмотрите гифку ниже:

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

* Примечание: Этот код в значительной степени идентичен другим нашим анимациям «по щелчку». *

 
$ ('. funky-animations h5'). on ('click', function () {
    $ (это).addClass ('анимированный шарнир'). one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
        $ (this) .removeClass ('анимированный шарнир');
    });
});  

Вот ссылка на готовый проект со всеми приколами:

И на этом мы завершаем наш тур Animate.css! Подведем итоги того, что мы прошли:

  1. Сначала мы узнали, как приступить к работе с Animate.css
  2. Затем мы подробно рассмотрели три различных типа анимации: статическая , прокрутка и щелчок
  3. Наконец, мы поэкспериментировали с некоторыми из более забавных (и значительно менее полезных) эффектов этой библиотеки — просто для смеха

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

Легко добавляйте анимацию с помощью прокрутки на любую веб-страницу за 5 минут. | by shishir raven

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

Если вы фронтенд-разработчик и пытаетесь понять, как добавлять анимацию при прокрутке вниз, то это небольшое руководство — именно то, что вам нужно.

Анимация при прокрутке — это растущая тенденция, и вы, как интерфейсный разработчик, будете получать больше запросов от клиента. Но добавление анимации теперь не является сложной задачей с библиотекой «Анимация при прокрутке». Это просто вопрос добавления правильных классов CSS, и это работает как шарм на вашей странице. Вы будете поражены легкостью, с которой вы можете добавить анимацию, и обязательно включите ее во все свои проекты.
Чтобы увидеть библиотеку Animate on scroll в действии, щелкните следующую ссылку.

Live Demo 1: вся анимация
Live Demo 2: Simple Demo

Добавьте CDN для Animate.css

  

Или же вы можете загрузить библиотеку и разместить ссылку на свой проект
https://daneden.github.io/animate.css

Добавить Animate на Прокрутите JS и CSS CDN

   

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

С помощью классов CSS вы можете управлять типом анимации.
Как roll-In, slide-In, fade-In. Вы также можете управлять

Чтобы применить анимацию к элементу, вы должны выбрать

  • Animation
  • Delay (optional)
  • Duration (optional)

Как выбрать анимацию .

Список всех анимаций, которые можно применить, можно найти на следующей странице.
https://shishirraven.github.io/animate-on-scroll/animate_on_scroll_demo_with_all_animations.html

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

Найти редактора можно здесь.

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

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

Вот и все! У вас есть страница с CSS-анимацией в Scroll. Супер!

Простая анимация прокрутки с помощью библиотеки AOS

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

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

Как установить библиотеку AOS

AOS можно установить с помощью Bower или npm.

Беседка:

  bower install aos --save  

нпм:

  npm install aos --save  

Затем свяжите стили и скрипты AOS:

  <ссылка rel = "stylesheet" href = "bower_components / aos / dist / aos.css ">

  

При желании вы можете загрузить таблицу стилей AOS и файлы JavaScript, используя CDN следующим образом:

CSS:

    

JavaScript:

    

Вот и все, других зависимостей нет, что помогает держать производительность вашего сайта под контролем.

Чтобы инициализировать AOS, просто напишите следующую строку в своем файле JavaScript.

  AOS.init ();  

Начало работы с AOS

После инициализации библиотеки все, что вам нужно сделать, это добавить некоторые определенные атрибуты.

Чтобы использовать базовую анимацию, вам просто нужно добавить data-aos = "animation_name" к вашим HTML-элементам.

Вы можете выбрать один из нескольких типов анимации. Например, вы можете добавить такие анимации затухания, как «постепенное исчезновение», «постепенное усиление» и «постепенное уменьшение-влево».Точно так же вы также можете добавить анимацию переворачивания и слайда, такую ​​как «переворот вверх», «переворот влево», «скольжение вниз» и «скольжение вправо».

Вот разметка нашего первого примера:

  

Анимация с постепенным увеличением изображения

Анимация с использованием переворота.

Анимировано с увеличением.

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

Посмотрите на приведенный выше код в действии:

См. Pen Animate в примерах прокрутки от SitePoint (@SitePoint) на CodePen.

Настройка анимации с помощью атрибутов данных AOS

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

  • data-aos-offset — этот атрибут можно использовать для запуска анимации раньше или позже указанного времени. Его значение по умолчанию — 120 пикселей.
  • data-aos-duration — Вы можете использовать этот атрибут, чтобы указать продолжительность анимации.Значение длительности может быть от 50 до 3000 с шагом 50 мс. Поскольку продолжительность обрабатывается в CSS, использование меньших шагов или более широкого диапазона излишне увеличило бы размер кода CSS. Этого диапазона должно хватить почти для всех анимаций. Значение по умолчанию для этого атрибута — 400.
  • data-aos-easing — этот атрибут можно использовать для управления функцией синхронизации для анимации различных элементов. Возможные значения: linear , easy-in-out и easy-out-quart .Вы можете увидеть список всех принятых значений в файле Readme проекта на GitHub.

Вот пример использования data-aos-duration и data-aos-easing :

.

Дополнительные атрибуты данных, которые вы можете использовать:

  • data-aos-anchor — этот атрибут полезен, когда вы хотите запускать анимацию на основе положения какого-либо другого элемента. Он принимает в качестве значения любой селектор. Значение по умолчанию — null . Это означает, что все анимации будут запускаться относительно собственного положения элемента.
  • data-aos-anchor-placement — по умолчанию анимация элемента применяется, как только его верхняя часть достигает нижней части окна. Это поведение можно изменить с помощью атрибута data-aos-anchor-Place . В качестве значения этот атрибут принимает два слова, разделенных дефисом. Например, вы можете установить для него значение сверху вниз , вверху по центру или сверху вверх . Три таких комбинации также возможны для значений центральный и нижний .
  • data-aos-once — Вы также можете указать, следует ли воспроизводить анимацию только при первом переходе к определенному элементу или при каждой прокрутке вверх или вниз. По умолчанию анимация воспроизводится каждый раз, когда элементы прокручиваются в поле зрения. Вы можете установить значение этого атрибута на false , чтобы анимировать элементы только один раз.

Ниже приведен пример использования data-aos-anchor-Размещение :

Изучение внутренней работы библиотеки AOS

Цель Animate on Scroll — обрабатывать логику и анимацию по отдельности.Для этого логика написана внутри JavaScript, а анимация написана внутри CSS. Это разделение позволяет нам писать собственные анимации и изменять их в соответствии с потребностями проекта в очень чистом и удобном рабочем процессе.

Библиотека отслеживает все элементы и их положение. Таким образом, он может динамически добавлять или удалять класс aos-animate на основе предоставленных нами настроек. Например, класс aos-animate удаляется всякий раз, когда элементы, к которым он применяется, выходят за пределы области просмотра.Однако, если элемент имеет значение data-aos-once , установленное на true , класс aos-animate не будет удален из этого конкретного элемента, тем самым предотвращая появление какой-либо анимации при последующих событиях прокрутки, которые приносят элемент в поле зрения.

AOS также применяет значение атрибутов по умолчанию к элементу в документе HTML. Например, data-aos-easing будет установлен на easy и data-aos-duration от до 400 .

Как я уже упоминал, библиотека применяет длительность анимации только в диапазоне от 50 до 3000 с шагом 50 мс. Это означает, что по умолчанию у вас не может быть длительности анимации 225 мс. Однако вы можете добавить эту продолжительность самостоятельно с помощью CSS следующим образом:

  body [data-aos-duration = '225'] [data-aos],
[data-aos] [data-aos] [data-aos-duration = '225'] {
  продолжительность перехода: 225 мс;
}  

Добавление собственных анимаций в AOS также довольно просто.

Просто создайте селектор атрибутов data-aos и установите для него имя вашей пользовательской анимации.

Затем добавьте свойство, которое вы хотите анимировать, с его начальным значением, а также свойство transition , установленное на имя свойства, которое вы хотите анимировать.

Например, ваша анимация называется rotate-c , а элемент, к которому она применяется, изначально повернут на -180 градусов.

Вот как должен выглядеть ваш CSS:

  [data-aos = "rotate-c"] {
  преобразовать: повернуть (-180 градусов);
  свойство-переход: преобразовать;
}  

Чтобы установить заключительный этап вашей анимации (в нашем примере это будет элемент, вращающийся от -180 градусов до 0 градусов), вы добавляете следующее правило CSS чуть ниже предыдущего:

  [data-aos = "rotate-c"].aos-animate {
  преобразовать: повернуть (0deg);
}  

Теперь добавьте data-aos = "rotate-c" к выбранному элементу HTML, и он будет вращаться по часовой стрелке (от -180 градусов до 0 градусов), когда пользователи прокручивают этот элемент в поле зрения.

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

Дополнительные функции

Библиотека AOS также предоставляет множество других функций, которые делают ее еще более гибкой и удобной для пользователя.Вместо того, чтобы предоставлять атрибуты для каждого элемента отдельно, вы можете передать их как объект в функцию init () . Вот пример:

  AOS.init ({
  смещение: 200,
  продолжительность: 800,
  ослабление: 'легкость в квадрате',
  задержка: 100,
});  

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

Вот два примера, иллюстрирующие обе функции:

  AOS.init ({
  отключить: 'мобильный'
});

AOS.init ({
  disable: function () {
    var maxWidth = 800;
    return window.innerWidth  

В этом Pen, когда экран меньше 800 пикселей, анимация AOS отключена с помощью функции, описанной выше:

Помимо init () , AOS также предоставляет две дополнительные функции: refresh () и refreshHard () .

refresh () используется для пересчета смещений и положений всех элементов. Он вызывается автоматически при таких событиях, как изменение размера окна.

refreshHard () вызывается автоматически всякий раз, когда новые элементы программно удаляются из модели DOM или добавляются в нее. Таким образом, библиотека может обновлять массив элементов AOS. После обновления массива refreshHard () также запускает функцию refresh () для пересчета всех смещений.

Заключение

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

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

Если вас интересует анимация JavaScript, вы также можете попробовать JS с Performance: requestAnimationFrame Тима Евко.

Вы когда-нибудь пробовали AOS в проекте? Каким был твой опыт? Не стесняйтесь делиться некоторыми советами с другими читателями.

Создание анимации на основе прокрутки с использованием jQuery и CSS3

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

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

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

Зачем запускать анимацию при прокрутке?

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

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

Анимация с помощью CSS или jQuery?

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

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

Совместимость с браузером

Поскольку наше решение будет основано на преобразованиях, совместимость наших браузеров будет ограничена теми, которые поддерживают либо 2D-преобразования, либо 3D-преобразования.

Все современные браузеры будут поддерживать 3D-преобразования и некоторые старые устаревшие браузеры, такие как Internet Explorer 9 и Opera 11.5 будет поддерживать 2D-преобразования. Общая поддержка как настольных, так и мобильных браузеров является всесторонней.

Метод анимации

jQuery работает в любом (нормальном) браузере при условии, что вы используете версию 1.X библиотеки. В jQuery 2.X удалена поддержка IE8 и ниже, поэтому используйте это только в том случае, если вам не нужно поддерживать устаревшие браузеры (удачно вам!).

Скорость

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

В примерах будут использоваться 3D-преобразования с 2D-откатом для старых браузеров. Мы хотим принудительно использовать аппаратное ускорение для повышения скорости, поэтому 3D-преобразование является обязательным (мы будем использовать translate3d вместе с другими функциями, которые вызывают рендеринг с ускорением на GPU).

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

Боковое примечание

Все мы знаем, что jQuery! == JavaScript , верно? Что ж, оказывается, что использование ванильного JS для анимации может быть не такой уж плохой идеей. Хотя это выходит за рамки данного руководства, вот две отличные статьи на эту тему для тех, кто хочет узнать больше:

А теперь вернемся к спектаклю…

Обнаружение элементов анимации на виде

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

Кэширование селектора

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

В нашем скрипте мы будем ссылаться как на объект window, , так и на набор элементов, которые мы хотим анимировать.

 
var $ animation_elements = $ ('. элемент-анимации');
var $ window = $ (окно);  

Обратите внимание на знак доллара перед переменными. Это соглашение, указывающее, что они содержат объект jQuery или коллекцию объектов.

Подключение к событию прокрутки

Затем мы создаем обработчик событий, который прослушивает событие scroll .Это сработает, когда мы прокручиваем страницу. Мы передаем ему ссылку на нашу функцию check_if_in_view (к которой мы вернемся через минуту). Эта функция будет выполняться каждый раз, когда запускается событие прокрутки.

  $ window.on ('прокрутка', check_if_in_view);  

Обработка изменения размера

Поскольку мы вычисляем высоту и ширину, нам необходимо учитывать изменения ориентации наряду с общим изменением размера.

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

  $ window.on ('изменение размера прокрутки', check_if_in_view);  

Кроме того, мы также используем метод триггера jQuery для запуска события scroll , как только DOM будет готов. Мы делаем это так, чтобы, если какой-либо из элементов, которые должны быть анимированы, находятся в области просмотра, они будут обнаружены как видимые, а анимация будет применена, как если бы мы прокручивали.

  $ окно.триггер ('прокрутка');  

Обнаружение положения прокрутки

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

  function check_if_in_view () {
  var window_height = $ window.height ();
  var window_top_position = $ window.scrollTop ();
  var window_bottom_position = (window_top_position + window_height);

  $ .each ($ animation_elements, function () {
    var $ element = $ (это);
    var element_height = $ element.outerHeight ();
    var element_top_position = $ element.смещение (). верх;
    var element_bottom_position = (element_top_position + element_height);

    
    если ((нижнее_элементное положение> = верхнее_окно) &&
        (element_top_position <= window_bottom_position)) {
      $ element.addClass ('в поле зрения');
    } еще {
      $ element.removeClass ('в поле зрения');
    }
  });
}  

Давайте разберемся, что здесь происходит.

Функция check_if_in_view вызывается сначала, когда DOM готова, а затем каждый раз, когда мы изменяем размер или прокручиваем.

Мы получаем текущую высоту окна вместе с его верхним и нижним положением, поэтому мы знаем, на какую область мы смотрим.

Мы просматриваем и ищем все элементы, в которых будет выполняться анимация (сохраненные в переменной $ animation_elements ). Для каждого из этих элементов мы собираем его высоту вместе с его верхним и нижним положением (чтобы мы знали, где он находится на странице).

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

Вот наглядный пример

Расчет высоты и ширины

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

высота () и ширина ()

Функции height (), и width () возвращают высоту или ширину элемента.Они исключают все отступы, границы и поля.

Для полной разбивки обратитесь к документации по высоте или ширине.

innerHeight () и innerWidth ()

Функции innerHeight (), и innerWidth () возвращают высоту или ширину элемента, включая его дополнительное заполнение (однако оно исключает как границы, так и поля)

Для полной разбивки посетите документацию innerHeight или innerWidth.

outerHeight () и outerWidth ()

Функции outerHeight (), и outerWidth () возвращают высоту или ширину элемента и включают его отступ и границу.

Кроме того, вы также можете указать включение его полей, передав в функцию значение true .

Для полной разбивки обратитесь к документации outerHeight или outerWidth

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

Элементы, которые вы хотите переместить, должны иметь стандартный класс, такой как animation-element , который устанавливает свое положение как относительное или абсолютное.Кроме того, если вы собираетесь создать несколько эффектов, вы можете создать соответствующие классы, такие как слайд-влево , которые можно комбинировать с классом in-view . Затем вы должны применить преобразование к классу, например animation-element.slide-left.inview

Вставить слева

В нашем первом примере мы будем сдвигать элементы слева, когда они входят в область просмотра. Мы достигаем этого, используя translate3d на оси x наших элементов.

См. CSS-анимацию пера при прокрутке - вставьте слева от SitePoint (@SitePoint) на CodePen.

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

Переход снизу

На этот раз мы будем размывать наши элементы снизу вверх по мере того, как пользователь прокручивает. Мы достигаем этого с помощью translate3d на оси y элемента.

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

См. CSS-анимацию пера при прокрутке - постепенное исчезновение снизу вверх от SitePoint (@SitePoint) на CodePen.

Многоступенчатая анимация подпрыгивания

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

См. CSS-анимацию пера при прокрутке - многоступенчатое перемещение по SitePoint (@SitePoint) на CodePen.

Куда отсюда?

Отсюда вы можете взять изученные концепции и применить их в своих проектах.

Теперь, когда вы можете определять, когда элемент находится в поле зрения, вы можете связать дополнительные преобразования или эффекты для создания интерактивных интерфейсов. Например, когда элемент попадает в область просмотра (и после его преобразования), вы можете преобразовать дополнительные элементы, такие как затухание в заголовке, масштабирование изображения и т. Д.

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

Поднимите свои навыки CSS на новый уровень с помощью нашей книги «Мастер CSS, 2-е издание» Тиффани Б. Браун, в которой рассматриваются CSS-анимации, переходы, преобразования и многое другое.

dbramwell / react-animate-on-scroll: компонент React для предоставления анимации при прокрутке пользователем

Компонент React для анимации элементов при прокрутке с помощью animate.css. В духе React-Scroll-Effect

Демо

Установить:

  npm установить response-animate-on-scroll --save
  

Если вы хотите использовать анимацию из animate.css, обязательно как-нибудь включите animate.css в свой проект Это можно сделать несколькими способами, например:

  npm install --save animate.css
  

, а затем импортируем в свой проект:

  импорт «animate.css / animate.min.css»;
  

Или просто включив ссылку на файл, размещенный на CDNJS:

  
  

  

Самое простое использование:

  import ScrollAnimation from 'response-animate-on-scroll';

  Некоторый текст

  

Недвижимость:

смещение - по умолчанию 150

"Область просмотра" по умолчанию составляет 150 пикселей сверху и снизу экрана. Когда часть элемента находится внутри «области просмотра», запускается animateIn.Когда никакая часть элемента не находится в «области просмотра», запускается animateOut. Этот размер «области просмотра» можно изменить, задав свойство смещения.

анимация

Любая css-анимация, определенная для класса, будь то из animate.css или анимации, которую вы создали сами. Анимация срабатывает, когда элемент входит в «область просмотра» (подробнее об этом см. В свойстве смещения).

animateOut

Любая css-анимация, определенная для класса, будь то анимация.css или анимацию, которую вы создали сами. Анимация срабатывает, когда элемент покидает «область просмотра» (подробнее об этом см. В свойстве смещения).

длительность - по умолчанию 1

Продолжительность анимации в секундах.

Первоначально Видимый - по умолчанию ложный

Должен ли элемент быть видимым с самого начала или нет.

задержка - по умолчанию 0

Как долго задерживать анимацию (в миллисекундах) после того, как она входит в представление или покидает его.

animateOnce - по умолчанию false

Должен ли элемент анимироваться только один раз или нет.

стиль - по умолчанию {}

Объект стиля может быть назначен любому компоненту ScrollAnimation и будет передан отрисованному элементу dom. Вероятно, лучше всего не устанавливать вручную animationDuration или opacity, поскольку компонент будет изменять эти атрибуты.

scrollableParentSelector

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

после анимации в

Функция обратного вызова, запускаемая после завершения анимации animateIn. Получает видимость элемента во время выполнения. Пример:

  функция (видимая) {
  if (visible.inViewport) {
    // Часть элемента находится в области просмотра (область, определяемая свойством смещения)
  } else if (visible.на экране) {
    // Часть элемента видна на экране
  } еще {
    // Элемент больше не виден
  }
}
  

послеAnimatedOut

Функция обратного вызова, запускаемая после завершения анимации animateOut. Получает видимость элемента во время выполнения. Пример:

  функция (видимая) {
  if (visible.inViewport) {
    // Часть элемента находится в области просмотра (область, определяемая свойством смещения)
  } else if (visible.на экране) {
    // Часть элемента видна на экране
  } еще {
    // Элемент больше не виден
  }
}
  

animatePreScroll - по умолчанию true

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

Изменений:

Версия 2.1.0

  • Теперь можно использовать scrollableParentSelector для использования ScrollAnimation в любом родительском элементе с прокруткой.

Версия 2.0.2

  • Компоненты ScrollAnimation теперь принимают свойство стиля.

Версия 2.0.1

  • animateOnce теперь работает правильно.
Версия 2.0.0
  • «visible» объект, переданный в обратные вызовы afterAnimatedIn и afterAnimatedOut, имеет свойства «onScreen», которые истинны, если элемент находится на экране, и «inViewport», которые истинны, если элемент находится в области просмотра. видимый. полностью и видимый.частично работать уже не будет.
  • Теперь должно работать на мобильных устройствах.
  • Должен более согласованно работать с элементами динамического размера (например, изображениями).
  • Элементы теперь "animateIn", когда любая их часть находится в области просмотра, а не только тогда, когда они полностью содержатся в области просмотра.
  • Область просмотра теперь имеет смещение по умолчанию 150 пикселей от верхнего и нижнего края экрана, а не 100 пикселей.

Разработка:

В корне проекта:

Установить зависимости:

  npm установить
  

Выполнение тестов:

Есть несколько автоматизированных тестовых случаев с кармой и браузером Chrome без браузера.Я попытался использовать Jest, а затем PhantomJS, но не смог заставить работать с событиями прокрутки. Чтобы запустить их:

  npm тест
  

Создайте компонент:

  сборка глотком
  

Запустите демонстрационный проект:

  cd демо
npm install
npm install ..
npm start
  

Выдающиеся CSS-эффекты прокрутки и параллакса

CSS-эффекты могут быть отличным способом добавить визуального интереса к вашему сайту. Распространенная ошибка веб-дизайна - сделать сайт слишком статичным.Одна небольшая параллакс-анимация может творить чудеса, делая ваш дизайн более интересным и динамичным для посетителей.

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

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

НЕОГРАНИЧЕННАЯ ЗАГРУЗКА: шаблоны электронной почты, администратора, целевой страницы и веб-сайтов

Всего от 16 долларов.50 в месяц!



СКАЧАТЬ

См. Перо
Codevember 4 :: Sky by magnificode (@magnificode)
на CodePen.

См. Pen
CSS Scrollbar от Daniel (@zkreations)
на CodePen.

См. Pen
CSS Snap Points от Рафаэля Фабени (@raphaelfabeni)
на CodePen.

См. Pen
Mouse Move Parallax ✨ от oscicen (@oscicen)
на CodePen.

См. Pen
3D CSS Parallax Depth Effect от Адриана Пейна (@dazulu)
на CodePen.

См. Pen
Эффект параллакса только для CSS, автор Яго Эстевес (@yagoestevez)
на CodePen.

См. Pen
Pure CSS Parallax Scrolling от Кита Кларка (@keithclark)
на CodePen.

См. Pen
[Чистый CSS] - прокрутка одной страницы Квентином Вероном (@VeronQ)
на CodePen.

См. Pen
Вырез изображения, эффект параллакса: CSS + SVG, автор Alex O’Neal (@alexoneal)
на CodePen.

См. Эффект прокрутки Pen
▲ от Дронки Рауля (@rauldronca)
на CodePen.

См. Анимацию иконки прокрутки Pen
в чистом CSS от Jonas (@JonasNoldeDev)
на CodePen.

См. Pen
Parallax Scrolling от Марселя Шульца (@MarcelSchulz)
на CodePen.

См. Демонстрацию Pen
: кнопка прокрутки вниз CSS от Наоя (@nxworld)
на CodePen.

См. Pen
Parallax Background от Рави Димана (@ ravid7000)
на CodePen.

См. Pen
Горизонтальная прокрутка CSS от lemmin (@lemmin)
на CodePen.

См. Pen
Параллакс вверху страницы от jakob-e (@ jakob-e)
на CodePen.

См. Pen
CSS Scroll Reveal Sections от Райана Маллигана (@hexagoncircle)
на CodePen.

Красивые эффекты прокрутки для вашего веб-сайта

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

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

Этот пост может содержать партнерские ссылки. См. Раскрытие партнерских ссылок здесь .

ng2-animate-on-scroll - npm

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

Очень простая директива Angular без зависимостей, которая позволяет вам добавлять CSS-анимацию к элементам, как только этот элемент будет достигнут путем прокрутки страницы. Работает с любой выбранной вами CSS-анимацией, включая Animate.css, как показано в примерах.

Установка

Чтобы установить директиву в свой проект, запустите:

 $ npm install ng2-animate-on-scroll - сохранить 

Используя директиву

Измените следующее в своем модуле приложения:

 импортировать {BrowserModule} из '@ angular / platform-browser';
импортировать {NgModule} из '@ angular / core';

импортировать {AppComponent} из './app.component ';

// импортировать сторонний модуль
импортировать {AnimateOnScrollModule} из ng2-animate-on-scroll;

@NgModule ({
  объявления: [
    AppComponent
  ],
  импорт: [
    BrowserModule,

    // импортируем модуль сюда
    AnimateOnScrollModule.forRoot ()
  ],
  провайдеры: [],
  бутстрап: [AppComponent]
})
экспортный класс AppModule {} 

Используйте директиву в шаблоне вашего компонента:

 

атрибут animationName

Обязательно.Атрибут animationName предназначен для имен классов CSS, добавляемых в момент появления элемента. Вот реальный пример использования библиотеки Animate.css в своем проекте:

 
длинная прокрутка контента ..
анимированный контент при появлении в области просмотра ..

или

 
длинная прокрутка контента ..
анимированный контент при появлении в области просмотра..

Animate.css Особенности

Если вы используете Animate.css с этим компонентом и пытаетесь анимировать элемент IN для просмотра (fadeIn, slideInLeft и т. Д.), Вы можете столкнуться с «миганием», когда элемент прокручивается в область просмотра (т. Е. Элемент будет отображается, затем скрывается, а затем отображается анимация). Это можно смягчить, переопределив класс Animate.css .animated , а затем применив visibility: hidden; к элементу, который вы хотите скрыть:

.Animated {
    видимость: видимый! важный;
}
.hide-on-init {
    видимость: скрыта;
} 
 
длинная прокрутка контента ..
анимированный контент при появлении в области просмотра ..

атрибут смещения

Вы также можете дополнительно добавить атрибут offset (спасибо siegerx3 ), чтобы указать количество пикселей, которое вам нужно будет прокрутить до ниже верха элемента для активации анимации.Значение по умолчанию - 80 пикселей, а значение может быть положительным или отрицательным.

 
контент с другим указанным смещением пикселей

Демо

Пример использования каталога можно найти по адресу: https://github.com/abhazelton/animate-on-scroll-test

Лицензия

Массачусетский технологический институт © Аарон Хазелтон

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *