Библиотека Intro.js строится на взаимодействии с элементами DOM через определённые атрибуты и классы. Чтобы создать корректный тур, необходимо правильно оформить HTML-разметку элементов, к которым будут привязаны подсказки.
Основные атрибуты, используемые в Intro.js:
data-intro
<button data-intro="Нажмите здесь, чтобы сохранить изменения">Сохранить</button>data-step
<div data-step="1" data-intro="Это главное меню приложения">Меню</div>
<div data-step="2" data-intro="Здесь отображаются уведомления">Уведомления</div>data-position
top,
bottom, left, right,
auto).<span data-intro="Иконка профиля" data-position="left">Профиль</span>Intro.js поддерживает подсказки для вложенных элементов, но важно учитывать контекст видимости:
onbeforechange и
onchange для управления видимостью элементов.Пример структуры с контейнерами:
<div class="tab" id="tab1">
<button data-step="1" data-intro="Начало работы с вкладкой 1">Вкладка 1</button>
</div>
<div class="tab" id="tab2" style="display:none;">
<button data-step="2" data-intro="Вкладка 2 содержит дополнительные настройки">Вкладка 2</button>
</div>
Если необходимо добавить подсказки для элементов одного типа (например, список товаров):
data-step.Пример:
<ul>
<li data-step="1" data-intro="Первый товар">Товар 1</li>
<li data-step="2" data-intro="Второй товар">Товар 2</li>
<li data-step="3" data-intro="Третий товар">Товар 3</li>
</ul>
Intro.js позволяет делать подсказки для элементов форм и кнопок:
<input type="text" data-step="1" data-intro="Введите ваше имя" data-position="bottom">
data-intro с кратким, ёмким текстом, чтобы подсказка не
перекрывала важную часть интерфейса.Для элементов, не являющихся стандартными HTML-тегами (например, SVG, canvas, кастомные компоненты):
data-intro и data-step нужно
добавлять на корневой контейнер элемента, который имеет
размеры и видим на странице.Пример с SVG:
<svg width="100" height="100" data-step="1" data-intro="Это графическое изображение">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red"/>
</svg>
const newButton = document.createElement('button');
newButton.textContent = 'Новый шаг';
newButton.setAttribute('data-step', '4');
newButton.setAttribute('data-intro', 'Это новый шаг в туре');
document.body.appendChild(newButton);
data-step должно соответствовать логике
интерфейса.Эта структура HTML является фундаментальной для эффективного использования Intro.js, позволяя строить интерактивные туры с правильной последовательностью и видимой подсказкой для пользователя.