Войти с помощью github
Форум /

bem-animations

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

Ссылка на GitHub с инструкцией по подключению.

Статус портирования

Перенесены все анимации из AnimateCSS, они доступны по модификатору type:

Например: fadeInDown -> animate_type_fade-in-down

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

В дополнение есть ещё несколько модификаторов: animation_speed_{1,2,3,4,5} - скорость анимации animation_delay_{1,2,3,4,5} - задержка анимации animation_direction_{reverse,alternate,alternate-reverse} - направление анимации

Благодарность

Спасибо @Flyer3d за помощь с портированием эффектов и также сообществу за голосование/обсуждение реализаций.

JS

На данной стадии JS блока есть только для bem-core@v4. Позже появится для bem-core@v3.

Сейчас JS позволяет менять модификаторы и вещает 3 вида событий: start, end, iteration.

Чего ждать в ближайшем будущем?

Расширение API. Будут добавлены методы: queue, start, stop, pause, reset

Примерная реализация:

// Просто старт анимации
animation.start('fade-in-down');

// С передачей объекта с функциями обратного вызова
animation.start('fade-in-down', {
  onStart: function() {},
  onEnd: function() {},
  onIteration: function() {}
});

// Простой обратный вызов по завершению
animation.start('fade-in-down', function () { 
  console.log('animation end')
});

// Простая очередь
animation.queue(['fade-in-down', 'flip-x', 'fade-out']);

// Очередь с обратным вызовом по завершению
animation.queue(['fade-in-down', 'flip-x', 'fade-out'], callback);

// Расширенные параметры для очередей
animation.queue([
  {type: 'fade-in-down', onStart: callback, onEnd: callback}, 
  {type: 'flip-x', onStart: callback, onEnd: callback}, 
  {type: 'fade-out', onIteration: callback}
], callback);

Всем приятной разработки! :)

Жду комментариев и участия заинтересованных людей ;)

upd Спасибо @JiLiZART, добавил ещё несколько методов в планы :)