Группировка шагов в Intro.js позволяет организовать последовательные элементы интерфейса в логические блоки, управлять видимостью подсказок и создавать гибкие сценарии обучения. В стандартной конфигурации каждый шаг добавляется независимо, но при сложных интерфейсах возникает необходимость объединять шаги в отдельные группы, чтобы, например, показывать отдельные части интерфейса только в определённом контексте.
Каждый шаг в Intro.js создаётся с помощью объекта, где можно указать
ключевые свойства: element, intro,
position и step. Для группировки добавляется
дополнительный параметр group, который идентифицирует шаг
как часть логической последовательности.
const introSteps = [
{
element: '#menu',
intro: 'Главное меню приложения',
position: 'right',
group: 'navigation'
},
{
element: '#search',
intro: 'Поле поиска',
position: 'bottom',
group: 'navigation'
},
{
element: '#profile',
intro: 'Профиль пользователя',
position: 'left',
group: 'user'
},
{
element: '#settings',
intro: 'Настройки приложения',
position: 'bottom',
group: 'user'
}
];
В этом примере создаются две группы: navigation и
user. Intro.js по умолчанию не использует поле
group, но при расширении логики можно фильтровать шаги по
этой группе и запускать их выборочно.
Для управления показом конкретной группы необходимо отфильтровать массив шагов перед инициализацией Intro.js:
function startIntroGroup(groupName) {
const stepsForGroup = introSteps.filter(step => step.group === groupName);
const intro = introJs();
intro.setOptions({ steps: stepsForGroup });
intro.start();
}
// Запуск только группы "navigation"
startIntroGroup('navigation');
Это позволяет разделять обучение на несколько этапов и запускать подсказки только для определённой части интерфейса.
Intro.js поддерживает динамическое управление шагами через методы
addStep и removeStep. Можно создавать группы
на лету, добавляя или убирая шаги в зависимости от действий
пользователя.
const intro = introJs();
// Добавление шагов для новой группы
intro.addStep({
element: '#notifications',
intro: 'Уведомления приложения',
position: 'bottom',
group: 'notifications'
});
// Удаление всех шагов, не относящихся к выбранной группе
intro.removeStep(step => step.group !== 'notifications');
intro.start();
Использование динамических методов позволяет адаптировать подсказки под состояние интерфейса, например, показывать шаги только после того, как пользователь откроет определённый раздел приложения.
Группы шагов можно объединять, создавая сложные сценарии обучения. Для этого шаги сортируются по группе и порядку, после чего передаются в Intro.js единым массивом:
const groupedSteps = ['navigation', 'user'].flatMap(groupName =>
introSteps.filter(step => step.group === groupName)
);
introJs().setOptions({ steps: groupedSteps }).start();
Такой подход удобен для многоуровневых интерфейсов, где требуется сначала показать базовую навигацию, а затем перейти к функционалу пользователя.
Для тонкой настройки можно использовать события Intro.js:
onafterchange, onbeforechange,
onexit. Например, после завершения одной группы
автоматически запускать следующую:
let currentGroupIndex = 0;
const groups = ['navigation', 'user'];
function startNextGroup() {
if (currentGroupIndex >= groups.length) return;
startIntroGroup(groups[currentGroupIndex]);
currentGroupIndex++;
}
const intro = introJs();
intro.onexit(() => startNextGroup());
startNextGroup();
Такой метод позволяет формировать цепочку подсказок, где каждая группа отображается после завершения предыдущей, обеспечивая пошаговое обучение без перегрузки пользователя.
Группировка шагов является мощным инструментом для построения интерактивного обучения с Intro.js, обеспечивая гибкость и управляемость подсказок на любом уровне интерфейса.