Shepherd.js — это библиотека для создания пошаговых интерактивных туров на веб-страницах. Итеративное улучшение в контексте Shepherd.js подразумевает постепенную доработку тура, его шагов, позиции подсказок и поведения на основе тестирования, обратной связи пользователей и анализа пользовательских сценариев. Этот подход позволяет добиться максимальной удобочитаемости и эффективности интерактивного обучения.
Для начала необходимо создать объект тура с использованием
конструктора Shepherd.Tour:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
classes: 'shepherd-theme-arrows',
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
});
Ключевые моменты:
defaultStepOptions задаёт единые параметры для всех
шагов, которые можно переопределять на уровне отдельных шагов.cancelIcon позволяет пользователю закрыть тур в любой
момент.classes) определяют визуальный стиль
подсказок.Шаги тура добавляются методом addStep, где определяется
текст подсказки, кнопки и поведение при открытии/закрытии:
tour.addStep({
id: 'welcome',
text: 'Добро пожаловать в наш интерфейс!',
attachTo: {
element: '#header',
on: 'bottom'
},
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
Выделенные моменты:
attachTo связывает подсказку с конкретным элементом DOM
и определяет позицию.buttons) могут вызывать функции
tour.next(), tour.back() или произвольные
действия.id) для упрощения управления.Для итеративного улучшения важно экспериментировать с поведением каждого шага:
show, hide, complete,
cancel, которые позволяют отслеживать взаимодействие
пользователя.tour.on('complete', () => {
console.log('Тур завершён');
});
onShow:tour.addStep({
id: 'feature',
text: 'Эта функция облегчает работу.',
attachTo: { element: '#feature-btn', on: 'right' },
when: {
show: () => {
if (window.innerWidth < 768) {
tour.getCurrentStep().updateStepOptions({
attachTo: { element: '#feature-btn', on: 'bottom' }
});
}
}
},
buttons: [{ text: 'Далее', action: tour.next }]
});
Итеративное улучшение включает проверку разных вариантов текста, расположения и интерактивных элементов:
const stepVariantA = {
id: 'variantA',
text: 'Вариант A',
attachTo: { element: '#btn', on: 'top' },
buttons: [{ text: 'Далее', action: tour.next }]
};
const stepVariantB = {
id: 'variantB',
text: 'Вариант B',
attachTo: { element: '#btn', on: 'bottom' },
buttons: [{ text: 'Далее', action: tour.next }]
};
Динамическая загрузка варианта на основе условий пользователя позволяет проверить реакцию на разные варианты интерфейса.
Shepherd.js позволяет гибко настраивать стили подсказок для улучшения восприятия:
shepherd-theme-arrows, shepherd-theme-dark)
или собственных CSS.scrollTo
обеспечивает, что элемент будет виден при показе подсказки.tour.addStep({
id: 'highlight',
text: 'Обратите внимание на этот элемент.',
attachTo: { element: '#highlighted', on: 'auto' },
classes: 'custom-highlight-step',
scrollTo: true,
buttons: [{ text: 'Закрыть', action: tour.complete }]
});
Для итеративного улучшения важно интегрировать сбор данных о взаимодействии пользователя с туром:
show, hide, complete
фиксируют прохождение шагов.tour.on('show', (event) => {
const stepId = event.step.id;
gtag('event', 'tour_step_show', { step: stepId });
});
Итеративное улучшение делает туры более эффективными, уменьшает когнитивную нагрузку и повышает удовлетворённость пользователей, превращая Shepherd.js в инструмент точного управления пользовательским опытом.