В Shepherd.js позиционирование шагов является ключевым аспектом
создания удобного и интуитивного пользовательского руководства.
Библиотека использует объект attachTo для привязки шага к
определённому элементу DOM и определения позиции относительно него.
const tour = new Shepherd.Tour({
defaultStepOptions: {
scrollTo: true,
}
});
tour.addStep({
id: 'example-step',
text: 'Пример шага',
attachTo: {
element: '.my-element',
on: 'bottom'
}
});
element — селектор DOM-элемента, к
которому привязывается шаг. Можно использовать CSS-селекторы или сам
DOM-объект.on — позиция шага относительно
выбранного элемента: top, bottom,
left, right, top-start,
top-end, bottom-start, bottom-end
и аналогичные. Каждая позиция управляет направлением стрелки и местом
отображения подсказки.top — шаг появляется над элементом.
Подходит, если область под элементом занята.bottom — шаг появляется под элементом.
Чаще всего используется для стандартных тултипов.left — шаг слева от элемента. Удобно,
если элемент находится справа.right — шаг справа от элемента.
Применяется для боковых панелей или кнопок слева.top-start / top-end — шаг
располагается сверху, но выравнивается соответственно по левому или
правому краю элемента.bottom-start / bottom-end
— шаг располагается снизу, с выравниванием по левому или правому
краю.left-start / left-end и
right-start / right-end —
позволяют дополнительно корректировать положение шага, чтобы избежать
перекрытия элементов на странице.Shepherd.js позволяет точно управлять смещением шагов относительно
выбранного элемента с помощью свойства offset в объекте
attachTo. Оно принимает массив из двух чисел
[x, y], где:
x — горизонтальное смещение.y — вертикальное смещение.attachTo: {
element: '.my-element',
on: 'bottom',
offset: [10, 20]
}
Такое смещение позволяет избежать перекрытия важного контента, подстраивая подсказку под реальные условия интерфейса.
Если указание позиции невозможно из-за ограничений пространства,
Shepherd.js использует автоматическое позиционирование. Для этого можно
задать опцию fallback:
attachTo: {
element: '.my-element',
on: 'top',
fallback: ['bottom', 'right', 'left']
}
Библиотека попробует разместить шаг в первой позиции
(top), и если элемент не помещается, она последовательно
проверит позиции из массива fallback.
Опция scrollTo отвечает за автоматическую прокрутку
страницы к элементу при активации шага:
defaultStepOptions: {
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
beh * avior: 'smooth' — анимация прокрутки.block: 'center' — выравнивание элемента по центру окна
при прокрутке.Эта функция повышает удобство использования и предотвращает ситуацию, когда шаг отображается вне видимой области экрана.
При разработке сложных интерфейсов важно учитывать, что шаги должны оставаться видимыми на разных размерах экрана. Shepherd.js интегрируется с библиотекой Popper.js, что позволяет:
attachTo: {
element: '.my-element',
on: 'bottom',
popperOptions: {
modifiers: [
{ name: 'offset', options: { offset: [0, 8] } },
{ name: 'preventOverflow', options: { padding: 10 } }
]
}
}
bottom по умолчанию, так как это
естественная зона восприятия подсказки.fallback или start/end
варианты.Эти методы позволяют создавать гибкие, адаптивные и визуально удобные пользовательские руководства с точным контролем расположения шагов.