Для интеграции fullPage.js в Angular проект необходимо установить библиотеку через npm:
npm install fullpage.js
Также рекомендуется установить типы для TypeScript:
npm install --save-dev @types/fullpage.js
После установки можно подключить стили и скрипт библиотеки в
angular.json:
"styles": [
"node_modules/fullpage.js/dist/fullpage.min.css",
"src/styles.css"
],
"scripts": [
"node_modules/fullpage.js/dist/fullpage.min.js"
]
Это обеспечит корректное применение стилей и функционала fullPage.js в проекте Angular.
Создание компонента для страницы с полноэкранной прокруткой:
import { Component, AfterViewInit, OnDestroy } from '@angular/core';
import fullpage from 'fullpage.js';
@Component({
selector: 'app-fullpage',
templateUrl: './fullpage.component.html',
styleUrls: ['./fullpage.component.css']
})
export class FullpageComponent implements AfterViewInit, OnDestroy {
private fullpageInstance: any;
ngAfterViewInit(): void {
this.fullpageInstance = new fullpage('#fullpage', {
// Настройки fullPage.js
autoScrolling: true,
navigation: true,
anchors: ['firstPage', 'secondPage', 'thirdPage'],
scrollingSpeed: 700,
responsiveWidth: 900
});
}
ngOnDestroy(): void {
if (this.fullpageInstance) {
this.fullpageInstance.destroy('all');
}
}
}
AfterViewInit используется для инициализации
fullPage.js после отрисовки DOM.OnDestroy обеспечивает корректное удаление экземпляра
fullPage.js при уничтожении компонента.HTML-шаблон должен соответствовать структуре, которую ожидает fullPage.js:
<div id="fullpage">
<div class="section">Первая секция</div>
<div class="section">Вторая секция</div>
<div class="section">Третья секция</div>
</div>
Каждая секция оборачивается в элемент с классом
.section. Для горизонтальных слайдов используется вложенная
структура:
<div class="section">
<div class="slide">Слайд 1</div>
<div class="slide">Слайд 2</div>
<div class="slide">Слайд 3</div>
</div>
Полный список доступных опций fullPage.js можно использовать для тонкой настройки поведения:
Пример использования событий:
this.fullpageInstance = new fullpage('#fullpage', {
afterLoad: (origin: any, destination: any, direction: any) => {
console.log(`Перешли на секцию ${destination.index + 1}`);
},
onLeave: (origin: any, destination: any, direction: any) => {
console.log(`Покидаем секцию ${origin.index + 1} в направлении ${direction}`);
}
});
afterLoad вызывается после завершения прокрутки на
новую секцию.onLeave срабатывает при уходе со секции.В Angular возможно динамически добавлять или удалять секции через сервисы или *ngFor. После изменения DOM необходимо обновить fullPage.js:
this.fullpageInstance.reBuild();
Метод reBuild() пересчитывает размеры секций и обновляет
состояние плагина без полной инициализации.
Для использования fullPage.js с маршрутизацией Angular необходимо учитывать, что каждая страница может требовать своей инициализации. Возможный подход:
AfterViewInit.OnDestroy.anchors для синхронизации URL с текущей
секцией:anchors: ['home', 'about', 'contact']
Теперь при переходе на /#about автоматически
активируется соответствующая секция.
FullPage.js поддерживает отключение автоматической прокрутки на
мобильных устройствах. Настройки responsiveWidth и
responsiveHeight позволяют делать прокрутку обычной при
малых экранах:
this.fullpageInstance = new fullpage('#fullpage', {
responsiveWidth: 768,
responsiveHeight: 600
});
При ширине экрана меньше 768px или высоте меньше 600px включается стандартная прокрутка браузера.
Можно изменить стиль навигационных точек через CSS или полностью управлять навигацией программно:
fullpage_api.moveTo(3); // Переместиться к третьей секции
fullpage_api.moveSlideRight(); // Переместить слайд вправо
Объект fullpage_api доступен глобально после
инициализации, либо через сохранённый экземпляр компонента.
.slide.fullpage_api.moveSlideLeft();
fullpage_api.moveSlideRight();