Свойство attachTo является одним из ключевых элементов
при создании шагов в библиотеке Shepherd.js. Оно отвечает за привязку
шага к конкретному элементу DOM, определяя, где именно будет
отображаться подсказка.
attachTo: {
element: String | HTMLElement,
on: String
}
element — CSS-селектор или объект
HTMLElement, к которому привязывается шаг.
on — сторона, относительно которой будет отображаться подсказка. Возможные значения:
'top' — выше элемента'bottom' — ниже элемента'left' — слева'right' — справа'auto' — библиотека автоматически подбирает оптимальное
положениеПривязка к элементу по селектору:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
}
});
tour.addStep({
id: 'step-1',
text: 'Это первый шаг',
attachTo: {
element: '#button-start',
on: 'bottom'
}
});
tour.start();
В этом примере подсказка появляется под кнопкой с id
button-start.
Привязка к элементу через
HTMLElement:
const targetElement = document.querySelector('.menu-item');
tour.addStep({
id: 'step-2',
text: 'Выбранный элемент меню',
attachTo: {
element: targetElement,
on: 'right'
}
});
Здесь используется прямой доступ к DOM-элементу, что удобно, если селектор не уникален или создается динамически.
Опция on: 'auto' позволяет Shepherd.js самостоятельно
выбирать наиболее подходящее место для подсказки с учетом доступного
пространства на экране. Это особенно полезно для адаптивного
дизайна:
tour.addStep({
id: 'step-3',
text: 'Автоматическое позиционирование',
attachTo: {
element: '#dynamic-element',
on: 'auto'
}
});
Если место сверху занято, подсказка может автоматически переместиться вниз, влево или вправо, чтобы не выходить за границы окна браузера.
attachToclasses для
управления стилем и анимацией, не влияя на attachTo.tour.addStep({
id: 'step-4',
text: 'Шаг с прокруткой',
attachTo: {
element: '.footer-link',
on: 'top'
},
scrollTo: true
});
tour.addStep({
id: 'step-5',
text: 'Асинхронная подготовка',
attachTo: {
element: '#async-element',
on: 'bottom'
},
beforeShowPromise: () => new Promise(resolve => {
setTimeout(resolve, 500); // ждем 500мс
})
});
HTMLElement, чтобы избежать ошибок при
динамически изменяемой разметке.attachTo с beforeShowPromise и
scrollTo.on: 'auto' для адаптивных интерфейсов и
мобильных версий страниц, чтобы подсказки не перекрывали важный
контент.attachTo — это фундаментальный инструмент управления
позиционированием шагов Shepherd.js, обеспечивающий гибкость и точное
отображение подсказок на любом веб-интерфейсе.