В Intro.js каждая подсказка может отображаться в различных позициях относительно целевого элемента. Понимание механизма позиционирования позволяет создавать удобные и интуитивные интерактивные туры, где подсказки не перекрывают важный контент страницы и легко воспринимаются пользователем.
data-positionОсновной способ указания позиции подсказки — использование атрибута
data-position на HTML-элементе:
<button data-intro="Это кнопка отправки" data-position="right">Отправить</button>
Возможные значения data-position:
top — подсказка появляется над
элементом.right — подсказка появляется справа от
элемента.bottom — подсказка появляется под
элементом.left — подсказка появляется слева от
элемента.auto — библиотека автоматически определяет оптимальное
расположение, чтобы подсказка не выходила за пределы окна браузера.Пример с несколькими элементами:
<div data-intro="Это заголовок" data-position="bottom">Заголовок</div>
<input type="text" data-intro="Введите имя" data-position="right">
<button data-intro="Сохранить данные" data-position="top">Сохранить</button>
Вместо HTML-атрибутов можно задавать позиции программно через объект настроек при инициализации тура:
introJs()
.setOptions({
steps: [
{
element: '#header',
intro: 'Заголовок страницы',
position: 'bottom'
},
{
element: '#input-name',
intro: 'Поле для ввода имени',
position: 'right'
},
{
element: '#submit-btn',
intro: 'Нажмите для отправки',
position: 'top'
}
]
})
.start();
Использование position в настройках шагов позволяет
гибко управлять расположением подсказок для каждого элемента.
auto)Значение auto позволяет Intro.js самостоятельно
выбирать оптимальное место для подсказки, чтобы она не выходила
за пределы видимой области окна. Внутри библиотеки реализован алгоритм,
который проверяет:
Пример использования:
<button data-intro="Подсказка подбирает место сама" data-position="auto">
Авто-позиция
</button>
В этом случае подсказка будет смещена на сторону с максимальным свободным пространством.
data-tooltipClass и CSS)Иногда стандартные позиции top, right,
bottom, left нужно дополнительно
корректировать для точного выравнивания. Для этого можно использовать
собственный CSS через класс:
<button data-intro="Сдвинутая подсказка" data-position="right" data-tooltipClass="custom-tooltip">
Кнопка
</button>
.custom-tooltip {
transform: translate(10px, 0); /* смещение вправо на 10px */
}
Это особенно важно для сложных макетов, где стандартное позиционирование перекрывает другие элементы интерфейса.
Позицию подсказки можно изменять в процессе работы тура с помощью методов Intro.js:
var intro = introJs();
intro.start();
// Через событие изменения шага
intro.onbeforechange(function(targetElement) {
if (targetElement.id === 'special-button') {
intro._options.steps[intro._currentStep].position = 'left';
}
});
Это позволяет адаптировать расположение подсказок к динамически изменяющемуся контенту, например, при открытии модальных окон или изменении размеров элементов.
auto.auto почти всегда предпочтительнее на мобильных
экранах.Эти возможности позволяют создавать точные и адаптивные туры, где подсказки всегда находятся в удобной для восприятия позиции, а пользовательский интерфейс остаётся чистым и не перегруженным.