В библиотеке Shepherd.js шаги тура обычно ассоциируются с конкретными
DOM-элементами через свойство attachTo. Однако существует
важный класс сценариев, при которых шаг не должен быть привязан к
какому-либо элементу интерфейса. Такие шаги используются для отображения
вводной информации, предупреждений, глобальных пояснений или
промежуточных инструкций, не относящихся к конкретному компоненту
страницы.
Шаг без привязки — это шаг, у которого отсутствует конфигурация
attachTo. В этом случае всплывающее окно (tooltip)
отображается относительно центра экрана или в позиции, определяемой
настройками по умолчанию.
Пример базового шага без привязки:
tour.addStep({
id: 'intro',
text: 'Это вводный шаг, не привязанный к элементу',
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
В данном случае Shepherd автоматически позиционирует шаг, поскольку отсутствует указание на конкретный элемент.
Если attachTo не задан, Shepherd использует встроенную
логику позиционирования:
useModalOverlay)Это поведение особенно полезно для:
Хотя по умолчанию шаг центрируется, можно дополнительно управлять его положением с помощью CSS или кастомных классов:
tour.addStep({
id: 'custom-position',
text: 'Кастомное позиционирование',
classes: 'my-centered-step',
buttons: [
{
text: 'Ок',
action: tour.next
}
]
});
.my-centered-step {
top: 20% !important;
}
Shepherd позволяет гибко переопределять стили, включая позицию, размеры и внешний вид окна.
Шаги без привязки часто используются совместно с модальным
затемнением (modal overlay):
const tour = new Shepherd.Tour({
useModalOverlay: true
});
Особенности:
Это усиливает восприятие информации, особенно при вводных шагах.
tour.addStep({
id: 'welcome',
text: 'Добро пожаловать в систему. Этот тур покажет основные функции.',
buttons: [
{
text: 'Начать',
action: tour.next
}
]
});
tour.addStep({
id: 'section-break',
text: 'Теперь рассмотрим настройки профиля.',
buttons: [
{
text: 'Продолжить',
action: tour.next
}
]
});
tour.addStep({
id: 'finish',
text: 'Тур завершён. Спасибо за внимание.',
buttons: [
{
text: 'Закрыть',
action: tour.complete
}
]
});
Свободные шаги эффективно комбинируются с обычными шагами:
tour.addStep({
id: 'intro',
text: 'Общий обзор интерфейса',
buttons: [{ text: 'Далее', action: tour.next }]
});
tour.addStep({
id: 'button-step',
text: 'Это кнопка сохранения',
attachTo: {
element: '.save-btn',
on: 'bottom'
},
buttons: [{ text: 'Далее', action: tour.next }]
});
Такой подход позволяет:
Шаги без привязки поддерживают стандартную навигацию:
tour.next() — переход к следующему шагуtour.back() — возвратtour.complete() — завершение тураtour.cancel() — прерываниеТакже возможно добавление произвольной логики:
buttons: [
{
text: 'Пропустить',
action: () => {
console.log('Тур пропущен');
tour.complete();
}
}
]
Поскольку отсутствует привязка к элементу:
Можно добавлять HTML-контент:
text: `
<h3>Информация</h3>
<p>Этот шаг содержит подробное описание возможностей системы.</p>
`
Шаги без привязки:
Это делает их надёжными для:
1. Неочевидное положение окна Если используются кастомные стили, шаг может оказаться вне видимой области.
2. Отсутствие контекста Без привязки к элементу пользователь может не понимать, к чему относится информация.
3. Избыточное использование Чрезмерное количество таких шагов делает тур менее интерактивным.
if (user.isFirstVisit) {
tour.addStep({
id: 'first-time',
text: 'Это ваш первый визит. Покажем основные возможности.',
buttons: [{ text: 'Ок', action: tour.next }]
});
}
tour.addStep({
id: 'async-step',
text: 'Загрузка данных...',
when: {
show: () => {
fetchData();
}
},
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
Шаги без привязки являются ключевым инструментом для создания логически связных, последовательных и понятных пользовательских туров, особенно в сложных интерфейсах, где не вся информация может быть привязана к конкретным элементам.