Для интеграции Headroom.js в проект необходимо подключить библиотеку через npm или CDN. Наиболее распространённый способ — установка через npm:
npm install headroom.js
После установки библиотеку можно импортировать в проект:
import Headroom from "headroom.js";
Если используется подключение через CDN, достаточно добавить
следующий тег в <head> HTML-документа:
<script src="https://unpkg.com/headroom.js@0.12.0/dist/headroom.min.js"></script>
Инициализация происходит путём создания экземпляра Headroom для выбранного DOM-элемента:
const header = document.querySelector("header");
const headroom = new Headroom(header);
headroom.init();
Headroom.js предоставляет гибкий API для настройки поведения заголовка:
up и
down свойствами:const options = {
tolerance: { up: 5, down: 10 },
offset: 50,
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned"
}
};
const headroom = new Headroom(header, options);
headroom.init();
pinned,
unpinned, top, notTop.Для проектов, использующих Headroom.js, CI/CD играет ключевую роль в автоматизации тестирования и деплоя. Основные задачи, решаемые в pipeline:
Сборка и минимизация Headroom.js часто используется вместе с другими библиотеками и CSS-фреймворками. Сборка проекта через Webpack, Vite или Parcel позволяет:
Пример скрипта для npm:
"scripts": {
"build": "vite build",
"start": "vite"
}
Автоматическое тестирование Проверка корректного поведения заголовка на разных разрешениях экрана:
pinned/unpinned.describe('Headroom behavior', () => {
it('adds unpinned class on scroll down', () => {
cy.visit('/');
cy.scrollTo(0, 200);
cy.get('header').should('have.class', 'headroom--unpinned');
});
});
eslint src/**/*.js --fix
stylelint src/**/*.css --fix
Это гарантирует, что Headroom и сопутствующие скрипты не создадут ошибок при интеграции в проект.
Автодеплой В pipeline можно настроить:
Пример конфигурации GitHub Actions:
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Build project
run: npm run build
- name: Deploy to server
run: ./deploy.sh
init().Headroom.js влияет на плавность скролла, поэтому важно включать тесты производительности в CI/CD:
npx lhci autorun
Headroom.js корректно работает на desktop и мобильных устройствах. В CI/CD рекомендуется:
cy.viewport(375, 667); // iPhone X
cy.scrollTo(0, 150);
cy.get('header').should('have.class', 'headroom--unpinned');
В результате CI/CD обеспечивает стабильность работы Headroom.js, предсказуемое поведение при прокрутке и безопасность продакшн-сборки даже при частых изменениях в проекте.