Shepherd.js использует библиотеку Popper.js для
управления позиционированием тултипов и подсказок на странице.
popperOptions — это ключевой параметр, позволяющий детально
контролировать поведение подсказки относительно целевого элемента,
границ видимости и смещений. Он передается при создании шага и
представляет собой объект конфигурации Popper.js.
popperOptionsconst tour = new Shepherd.Tour({
defaultStepOptions: {
popperOptions: {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 10]
}
},
{
name: 'preventOverflow',
options: {
padding: 8
}
}
],
strategy: 'absolute'
}
}
});
modifiers — массив модификаторов,
определяющих поведение поппера.strategy — стратегия позиционирования:
'absolute' или 'fixed'.placement — можно дополнительно
указать позицию подсказки относительно элемента: 'top',
'bottom', 'left', 'right'.offsetПозволяет смещать подсказку относительно целевого элемента.
modifiers: [
{
name: 'offset',
options: {
offset: [0, 15] // [по горизонтали, по вертикали]
}
}
]
preventOverflowПредотвращает выход подсказки за пределы видимой области.
modifiers: [
{
name: 'preventOverflow',
options: {
padding: 10 // расстояние от края окна
}
}
]
padding задает минимальный отступ от границ окна.flipАвтоматически меняет позицию подсказки, если выбранное размещение невозможно.
modifiers: [
{
name: 'flip',
options: {
fallbackPlacements: ['top', 'bottom', 'left', 'right']
}
}
]
fallbackPlacements — массив альтернативных позиций для
popper.preventOverflow для
адаптивного поведения подсказки.arrowДобавляет стрелку к подсказке и позиционирует её по направлению к элементу.
modifiers: [
{
name: 'arrow',
options: {
element: '.shepherd-arrow'
}
}
]
element — селектор или DOM-элемент стрелки.popperOptionstour.addStep({
id: 'step-1',
text: 'Пример шага с расширенными настройками Popper.js',
attachTo: {
element: '#button',
on: 'bottom'
},
popperOptions: {
strategy: 'fixed',
modifiers: [
{
name: 'offset',
options: { offset: [0, 20] }
},
{
name: 'flip',
options: { fallbackPlacements: ['top', 'right', 'left'] }
},
{
name: 'preventOverflow',
options: { padding: 12 }
},
{
name: 'arrow',
options: { element: '.shepherd-arrow' }
}
]
},
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
fixed закрепляет подсказку относительно окна,
а не документа.offset создаёт визуальный зазор между
элементом и подсказкой.flip и preventOverflow обеспечивают
корректное позиционирование на любых размерах экрана.arrow указывает на целевой элемент, создавая визуальную
привязку.Всегда использовать preventOverflow
при работе с динамическим контентом.
Комбинировать offset и
arrow, чтобы подсказка выглядела аккуратно и не
перекрывала элемент.
Использовать flip на маленьких
экранах или при изменяемых позициях элементов.
Выбирать стратегию позиционирования исходя из типа интерфейса:
absolute — для статичных контейнеров;fixed — для модальных окон и фиксированных
элементов.Проверять видимость подсказки при изменении размеров окна, особенно при сложных макетах.
Эти возможности popperOptions позволяют создавать
гибкие, адаптивные и визуально аккуратные туры на любом интерфейсе,
обеспечивая корректное поведение подсказок в любых условиях.