Рубрики
Без рубрики

Как создать шатунную анимацию для страстического списка в Vue.js

Как создать шатунную анимацию для страстического списка в Vue.js

Автор оригинала: Thomas Findlay.

Vue.js делает обработку различными видами анимации очень легко. Он предоставляет компоненты и крючки для анимации односмысленного и нескольких элементов – переходных и переходных групп; Вы можете прочитать больше о них в официальной документации, которую вы можете найти в https://vuejs.org/v2/guide/transitions.html Отказ Это довольно легко создавать простые и еще более продвинутые анимации с просто используемым CSS. Если вам нужно что-то более продвинутое, то сторонние библиотеки могут быть легко интегрированы. С целью этого учебника я буду использовать Tweenlite для анимации. Перед началом, убедитесь, что у вас есть минимум Node.js 8.x.x Установлено как требуется VUE-CLI и NPM.

Сначала давайте быстро подготовим структуру папки и все пакеты, которые нам нужны для приложения. Откройте свой терминал и установите последний Vue-CLI, набрав

NPM установить -G @ vue/cli

После того, как он успешно установлен в папке, в которой вы хотите иметь свой проект, в моем случае это C: \ Users \ user \ dev. CD к нему и запустить

Vue Создать анимированный список

Вы можете использовать команду Vue после установки VUE-CLI. Если это не сработает, убедитесь, что вы открываете свой терминал. Если он все еще не работает, то, возможно, путь не был установлен правильно. CREATE – это команда, предоставленная VUE, а « AnimatedList » – это имя для нашего проекта. После запуска этой команды вам придется выбирать несколько вариантов для проекта. Как это только для создания анимации, позволяет понять по умолчанию (Babel, Eslint). Когда все сделано, вы должны увидеть что-то вроде этого в вашем терминале:

CD в AnimatedList и запустить NPM запустить Чтобы проверить, работает ли все.

Это структура папки, которую вы, вероятно, теперь имеете. Тем не менее, это может быть отличным для вас, так как на момент написания этого учебника Vue-CLI 3 находится в бета-этапе.

В терминале запустить ‘ NPM Установка -Save Axios GSAP ‘. Нам нужны Axios для получения некоторых данных от API и GSAP Как это обеспечивает Tweenlite для анимации. Вы можете прочитать больше о том, что GSAP должен предложить на https://greensock.com/gsap Отказ После установки пакетов запустите в своем терминале ‘ NPM запустить «Чтобы запустить DEV Server.

Переименовать Helloworld.vue файл на AnimatedList.Vue И измените его контент, поэтому он просто имеет базовый шаблон для одного файлового компонента.

Теперь мы должны настроить файл app.vue, так как он все еще пытается импортировать и использовать компонент helloworld.vue, который больше не существует. Измените импорт из « Импорт Helloworld из» ./Components/hellowOrld.vue ‘ “to” Импорт анимированного списка от’ ./Components/animateList.vue ‘” Отказ Обновить компоненты свойства в Анимированный список а также компонент в шаблоне. Также удалите логотип Vue из шаблона. Ваше файл app.vue теперь должен выглядеть так:

Мы сделаем с помощью очистки файлов, поэтому сначала давайте получим некоторые данные для списка, который мы хотим анимировать. В AnimatedList.Vue, перед «экспортом по умолчанию», добавить « Import Axios из« AXIOS », а затем создайте новый экземпляр AXIOS.

Мы будем использовать API Starwars, чтобы получить некоторые данные.

Если вы находитесь на localhost, у вас могут быть вопросы CORS. В этом случае просто установите плагин браузера, как Moesif на хроме.

Добавить свойство «Люди» для данных, которые должны быть массивом. Мы будем хранить наш список там. Кроме того, нам нужно CurrentPage , OrdingData Флаг и анимация Флаг, который мы будем использовать позже.

После этого мы создаем метод для получения людей из Starwars. Добавьте методы свойства для экспортируемого объекта и создания « GetWeople » метод, который примет « страница » в качестве параметра. Это должно по умолчанию 1 и возвращать объект данных.

Как вы, наверное, заметили, я использую здесь const, Async/await и Параметры по умолчанию , которые доступны в новых стандартах Ecmascript. Если вы должны поддерживать более старые браузеры, то убедитесь, что вы используете что-то вроде Babel для транспортировки вашего кода на ES5. Также, поскольку ES6, если свойство объекта имеет то же имя, что и значение, вместо написания {страница: страница} , вы можете просто написать {страница} Отказ

Теперь давайте добавим Создано () Крюк, в котором мы позвоним g_etpeople () _ и обрабатывать результат. API SWI вернет объект, который будет иметь значение, следующие, предыдущие и свойства результатов. Тем не менее, мы заинтересованы только в результатах и подсчете. С деструктурией мы можем легко получить результаты и подсчитать и назначить их константы. После этого мы обновляем людей недвижимость. Это приведет к восстановлению списка, который мы скоро добавлю. Мы также должны хранить максимальное количество страниц для пагинации. Максимальный номер страниц не изменится, и поэтому он не должен быть реактивным. Нам нужно также хранить длину массива, но это также не должно быть реактивным. Статические свойства обычно хранятся в $ options пропры Кроме того, мы должны включать и выключить OrdingData Таким образом, кнопки Pagination отключены, когда данные выбираются.

У нас есть данные для отображения, поэтому пришло время добавить некоторые HTML и CSS.

Над тегом добавьте немного стилирования для кнопок и списка.

Просто помните, что элементы списка должны иметь « Position: относительно », поэтому мы можем позже анимировать свой собственность « покинула ». Теперь мы должны добавить метод ChangePage, поскольку Vue Compiler будет выбрасывать ошибку. В Callpage Мы проверим, не пройдена страница не меньше 1 или больше, чем maxpages Отказ Если это тогда, мы изменим его на 1 или на maxpages Отказ После проверки мы позвоним Updatelist (страница) и пройти страница как параметр. В Updatelist Мы будем получать больше людей и обновлять люди Массив и CurrentPage Отказ

У нас есть список и пагинация на месте. Теперь пришло время наконец добавить некоторые анимации, поэтому давайте импортируем Tweenlite в наш файл.

«Импорт {Tweenlite} от« GSAP »

Мы также должны обернуть наш список <Переход-группа> Компонент, чтобы иметь возможность использовать переходную систему и крючки, предоставленные Vue.js.

Нам также нужно добавить методы для каждого крючка.

В foreterner Крюк мы устанавливаем непрозрачность до 0 и левый свойство до 50%, чтобы переместить предмет из его позиции. Мы также включаем анимация Флаг, который нам понадобится в ближайшее время.

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

В дневник крючок мы просто выключаем анимация флаг

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

Включите анимация Флаг в BeforeLeave крюк

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

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

Наконец, наш список скользит и выходит. Whover, есть проблема, когда мы получим новый набор данных, которые заставляют перенаправить и запускать новую анимацию для начала до того, как текущий закончен. Вот почему нам нужно « анимация » флаг. Добавьте новое свойство на объект данных под названием Peopleoupdate Отказ Вот как ваш объект данных должен выглядеть сейчас.

Теперь измените Updatelist Функция, поэтому, когда она получает результаты, она проверит, не будет прогрессирована анимация. Если это не так, то он должен назначить результаты « люди «Собственность, иначе к ‘ Peopleoupdate ‘? Обратите внимание, что мы обновляем PEOLLELLENG Только когда анимация не работает в этой функции. Мы делаем это так, потому что анимация зависит от длины предыдущего массива, поэтому мы еще не можем переопределить его, на случай, если это было разным.

Перед

После

Однако это не все. Нам также нужен способ обновить людей с новыми данными, когда анимация делает конец. Мы могли бы инициализировать функцию после последнего элемента, чтобы проверить, есть ли какие-либо данные для обновления, но давайте используем свойство часов Vue экземпляра. Мы будем смотреть ” анимация” Свойство и сделайте что-то только тогда, когда анимация была выключена, и если у нас есть какие-либо данные для обновления. Помимо обновления люди Свойство и запуск новой анимации, мы также обновляем PEOLLELLENG с новой длиной.

Это последнее, что нам нужно было завершить создание шахматной анимации для списка. Существуют различные способы создания таких анимаций, подобных этой, существует множество улучшений, которые могут быть сделаны в настоящий код, например, перемещение компонента перехода-группы с его методами к другому компоненту, а затем просто прохождение элементов списка в слоте. Однако это то, что вы можете сделать самостоятельно для практики. Вы можете найти этот проект на моем репо GitHub в https://github.com/deraies/animateList Я надеюсь, что вам понравилось прочитать этот учебник.