Data API, контейнер прокрутки и ручная инициализация.
VGSpy добавляет класс active ссылке текущей секции.
Прокрутите область примера или выберите пункт навигации. Каждый пример независим;
оформление активных ссылок задаёт приложение.
Data API: плавный переход
Навигация и область прокрутки — разные элементы. data-target указывает контейнер, data-root-margin задаёт область наблюдения. Нажмите «Проверка» и прокрутите обратно.
01 · Подготовка
Добавьте уникальные id секциям и ссылки на них в навигацию.
Прокрутите эту область вниз: выделение следует за видимыми разделами.
02 · Настройка
data-target указывает прокручиваемую область. Без него VGSpy ищет scroll-root у секций автоматически.
03 · Проверка
Нажмите «Подготовка» и проверьте плавный возврат к началу.
HTML
<div class="spy-demo">
<nav class="spy-demo__nav" id="spy-data-nav" aria-label="Этапы запуска"
data-vg-toggle="spy" data-target="#spy-data-scroll"
data-root-margin="0px 0px -25%" data-threshold="0.1, 0.5, 1">
<a href="#spy-data-start">Подготовка</a>
<a href="#spy-data-build">Настройка</a>
<a href="#spy-data-check">Проверка</a>
</nav>
<div class="spy-demo__scroll" id="spy-data-scroll" tabindex="0" role="region" aria-label="Этапы запуска: содержимое">
<section class="spy-demo__section" id="spy-data-start"><h4>01 · Подготовка</h4><p>Добавьте уникальные id секциям и ссылки на них в навигацию.</p><p>Прокрутите эту область вниз: выделение следует за видимыми разделами.</p></section>
<section class="spy-demo__section" id="spy-data-build"><h4>02 · Настройка</h4><p>data-target указывает прокручиваемую область. Без него VGSpy ищет scroll-root у секций автоматически.</p></section>
<section class="spy-demo__section" id="spy-data-check"><h4>03 · Проверка</h4><p>Нажмите «Подготовка» и проверьте плавный возврат к началу.</p></section>
</div>
</div>
JavaScript
/**
* Описание: декларативный пример VGSpy.
* Возможности: автозапуск и настройка наблюдения через data-атрибуты.
*/
// Дополнительная инициализация не требуется: используется Data API.
// Общий JavaScript-entrypoint vgapp должен быть подключён на странице.
Подключите общий JS-entrypoint. data-vg-toggle="spy" ставится на навигацию, а не на секции. Элементы, вставленные после загрузки DOM, требуют getOrCreateInstance().
target / data-target
Селектор или DOM-элемент прокрутки. Если явно заданный элемент не прокручивается, VGSpy ищет overflow-контейнер у первой секции, затем использует окно. Без target сначала проверяется сама навигация. Все секции примера должны принадлежать одному scroll-root.
rootMargin / data-root-margin
По умолчанию '0px 0px -25%'. Меняет область IntersectionObserver; это не отступ прокрутки от фиксированной шапки.
threshold / data-threshold
По умолчанию [0.1, 0.5, 1]. Массив чисел от 0 до 1 или строка '0.1, 0.5, 1'; массив заменяет стандартные пороги.
smoothScroll / data-smooth-scroll
true по умолчанию. false отключает перехват клика, но не наблюдение. Кнопке с data-vg-target при false понадобится собственное действие; обычная ссылка продолжает работать нативно.
offset / data-offset
Устаревший параметр, по умолчанию null. Если задан, заменяет rootMargin на «offset px 0px -30%». Для новых интеграций используйте rootMargin.
Приоритет
Значения по умолчанию → параметры JavaScript → одноимённые data-атрибуты. Настройки читаются при создании экземпляра; refresh() не меняет конфигурацию.