
impress.js – популярный фреймворк предназначенный для создания впечатляющих презентация просто в браузере. Правда браузер для этого должен поддерживать CSS3 3d трансформации.
Подробный разбор моментов связанных с построением презентации и отображением отдельных слайдов был проведен в предыдущей публикации. Тогда за пределами нашего внимания остались возможности управления презентацией через API фреймворка. Для тех, кому мало получаемых «из коробки» возможностей impress.js, разберем его простой и компактный API.
Вспомним, что фреймворк impress.js предназначен для создания презентаций из слайдов, размещенных в трехмерном пространстве и обеспечивает умопомрачительные 3d трансформации при переходе от слайда к слайду.
Вот простой пример презентации.
Вся презентация помещается в контейнер у которого
id="impress"
. Внутри общего контейнера, размещаются контейнеры отдельных слайдов, отмеченные классом: class="step"
. Местоположение слайда задаётся с помощью data-
атрибутов координат: data-x
, data-y
, data-z
и поворота (наклона): data-rotate-x
, data-rotate-y
, data-rotate-z
. Кроме того для каждого слайда может быть задан масштаб data-атрибутом data-scale
.Созданная таким образом презентация прекрасно прокручиваются вперед нажатием специальных клавиш: таб, пробел, стрелка вправо, стрелка вниз, Page Down
и назад, нажатием клавиш стрелка влево, стрелка вверх, Page Up
Если же есть необходимость организовать автоматическое перелистывание слайдов через заданные промежутки времени, перехватывать события перехода к тому или иному слайду или иным способом расширить возможности работы с презентацией то здесь следует воспользоваться API фреймворка.
Полезные функции
Чтобы получить доступ к функциям API, необходимо создать объект, содержащий эти функции:
var api = impress();
теперь можно воспользоваться следующими функциями
api.init()
: инициация презентацииapi.next()
: переход к следующему шагу (слайду) презентацииapi.prev()
: переход к предыдущему шагу (слайду) презентацииapi.goto(id)
: переход к указанному шагу (слайду) презентации, можно перейти по id, по номеру шага (слайда), или по DOM-элементу слайда
Автоматическое перелистывание слайдов
Простое бесконечное перелистывание слайдов, через промежуток, например, 3 секунды:
var interaval=setInterval( function(){
// используем функцию api.next для прехода к следующему слайду
// через каждые 3 секунды
api.next();
},3000);
Одноразовое перелистывание слайдов с установленным временем демонстрации
var step_transitions=[
{slide: 1, duration: 3500},
{slide: 2, duration: 3000},
{slide: 3, duration: 2500},
{slide: 4, duration: 2000},
{slide: 5, duration: 1500},
{slide: 6, duration: 1000},
{slide: 7, duration: 500},
]
var time_frame=0;
step_transitions.filter(function(steps){
time_frame = time_frame + steps.duration;
setTimeout(function(){
api.goto(steps.slide);
}, time_frame);
});
Обработка событий
Программирование на JavaScript предполагает использование обработчиков событий, в качестве полезного средства управления ходом программы. Фреймворк impress.js позволяет обрабатывать два типа специальных событий:
- stepenter – возникает в момент перехода на новый слайд (шаг)
- stepleave– возникает в момент покидания очередного слайда (шага)
В простом примере выдается сообщение о покидаемом слайде и сообщение о слайде на который осуществляется переход.
document.addEventListener('impress:stepenter', function(event){
alert( 'Переходим к слайду: ' + event.target.id );
}, false);
document.addEventListener('impress:stepleave', function(event){
alert( 'Покидаем слайд: ' + event.target.id );
}, false);
Вот и весь нехитрый инструментарий, для программирования презентаций impress.js:
- 4 функции: init(), next(), prev(), goto(id);
- 2 события: stepenter, stepleave;
Но его вполне достаточно для построения слайдера или осуществления дополнительных действий при переходе от слайда к слайду.