Intro.js использует анимации для плавного отображения шагов и подсветки элементов интерфейса. Ключ к высокой производительности — правильное управление DOM и CSS-анимациями, минимизация перерисовок и оптимизация последовательности шагов.
Intro.js применяет CSS-свойства transform и
opacity для анимации появления подсказок и рамок вокруг
элементов. Эти свойства обеспечивают аппаратное ускорение, так как они
обрабатываются графическим процессором (GPU), а не центральным (CPU).
Важные моменты:
translate3d вместо
top/left: это снижает нагрузку на CPU и исключает
перерасчёт стилей всего документа.Каждый шаг Intro.js создаёт подсказку и рамку вокруг элемента. При большом числе шагов:
Intro.js динамически ищет элементы по селекторам на каждом шаге. Это может быть дорогостоящим при больших страницах:
id вместо
сложных CSS-селекторов ускоряет поиск.element вместо querySelector
снижает повторный поиск.Параметр transitionDuration задаёт длительность анимации
появления подсказки и рамки:
intro.setOptions({
transitionDuration: 300
});
Intro.js взаимодействует с DOM и прослушивает события окна
(resize, scroll). Для высоконагруженных
страниц:
Подсветка элемента (highlightClass) создаётся путём
наложения рамки и затемнения остальных частей экрана. Для повышения
производительности:
rgba, избегая
фильтров и сложных градиентов.transition на
свойства transform и opacity.На мобильных устройствах производительность особенно критична:
const intro = introJs();
intro.setOptions({
steps: [
{ element: '#header', intro: 'Заголовок сайта', position: 'bottom' },
{ element: '#menu', intro: 'Меню навигации', position: 'right' },
{ element: '#content', intro: 'Основной контент', position: 'top' }
],
showStepNumbers: false,
exitOnOverlayClick: true,
transitionDuration: 250
});
intro.start();
В этом примере:
transitionDuration: 250).id ускоряют поиск элементов.Performance в Chrome DevTools).Эти подходы позволяют поддерживать плавность и отзывчивость интерфейсов при любых сценариях использования Intro.js.