Stickybits — это легкая JavaScript-библиотека, предназначенная для реализации «липких» элементов на веб-страницах с минимальными зависимостями. В современных фронтенд-проектах подключение библиотек через модульные системы является стандартной практикой, позволяя организовать код более структурированно и управлять зависимостями через сборщики, такие как Webpack, Parcel, Rollup или Vite.
Для использования Stickybits в проекте с модульной системой необходимо установить библиотеку через пакетный менеджер. Доступные команды:
npm install stickybits
или
yarn add stickybits
После установки библиотека становится доступной для импорта в коде через синтаксис ES Modules или CommonJS.
Современные фронтенд-проекты используют синтаксис ES6. Для
подключения Stickybits применяется стандартный import:
import stickybits from 'stickybits';
Особенности:
stickybits по умолчанию экспортируется как
функция.stickybits возвращает объект с методами для
управления «липкими» элементами.Пример инициализации:
const sticky = stickybits('.sticky-element', {
stickyBitStickyClass: 'is-sticky',
useStickyClasses: true,
offset: 10
});
Здесь ключевые параметры:
stickyBitStickyClass — CSS-класс, применяемый к
элементу при фиксации.useStickyClasses — логический флаг включения/отключения
CSS-классов.offset — смещение в пикселях от верхней границы
окна.Если проект использует CommonJS (например, Node.js или старые конфигурации Webpack), импорт выглядит следующим образом:
const stickybits = require('stickybits');
Использование идентично ES Modules:
const sticky = stickybits('.sticky-element', {
stickyBitStickyClass: 'is-sticky',
useStickyClasses: true,
offset: 20
});
Особенность CommonJS — отсутствие поддержки tree-shaking, поэтому весь модуль будет включен в сборку.
Webpack и другие сборщики обрабатывают ES Modules и CommonJS одинаково, но важно учитывать:
import stickybits from 'stickybits'; позволяет
исключить неиспользуемый код из итогового бандла.import('stickybits').then(module => {
const stickybits = module.default;
stickybits('.lazy-sticky', { useStickyClasses: true });
});
Это полезно для страниц с большим количеством скриптов, где не все «липкие» элементы нужны сразу.
Stickybits имеет декларации типов, что позволяет использовать её в TypeScript-проектах:
import stickybits, { StickybitsInstance } from 'stickybits';
const sticky: StickybitsInstance = stickybits('.sticky-element', {
useStickyClasses: true,
offset: 15
});
Параметры опций строго типизированы, что снижает вероятность ошибок при конфигурации.
default export), что важно
учитывать при импорте.window.stickybits, что предотвращает конфликт с другими
скриптами.window перед
вызовом.Webpack:
import stickybits from 'stickybits';
stickybits('.header', {
stickyBitStickyClass: 'header-sticky',
useStickyClasses: true,
offset: 0
});
Rollup:
import stickybits from 'stickybits';
const sticky = stickybits('.menu', { useStickyClasses: true });
Parcel:
import stickybits from 'stickybits';
document.addEventListener('DOMContentLoaded', () => {
stickybits('.sidebar', { offset: 10 });
});
Во всех случаях API остаётся единым, а различия касаются только системы импорта и сборки.