Headroom.js — это легкая библиотека для управления поведением шапки страницы при скролле. Для точной настройки её работы используется объект конфигурации при инициализации. Рассмотрим каждый параметр подробно.
tolerancenumber | { up: number, down: number }var headroom = new Headroom(header, {
tolerance: 10
});
var headroom = new Headroom(header, {
tolerance: {
up: 5,
down: 20
}
});
offsetnumbervar headroom = new Headroom(header, {
offset: 100
});
classesТип: object
Описание: Позволяет задавать собственные CSS-классы для разных состояний шапки.
Стандартные свойства объекта
classes:
initial — класс, добавляемый при инициализации.pinned — класс при показанной шапке.unpinned — класс при скрытой шапке.top — класс, когда страница находится в начале.notTop — класс, когда страница проскроллена вниз.bottom — класс при достижении низа страницы.notBottom — класс, когда пользователь не на дне
страницы.Пример использования:
var headroom = new Headroom(header, {
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top",
bottom: "headroom--bottom",
notBottom: "headroom--not-bottom"
}
});
onPin,
onUnpin, onTop, onNotTop,
onBottom, onNotBottomfunctionvar headroom = new Headroom(header, {
onPin: function() { console.log("Шапка показана"); },
onUnpin: function() { console.log("Шапка скрыта"); },
onTop: function() { console.log("На верху страницы"); },
onNotTop: function() { console.log("Прокрутка вниз"); }
});
scrollerfunctionwindow. Полезно для внутренних
контейнеров с прокруткой.var headroom = new Headroom(header, {
scroller: function() {
return document.querySelector(".scrollable-container");
}
});
onInitializefunctionvar headroom = new Headroom(header, {
onInitialize: function() {
console.log("Headroom инициализирован");
}
});
classes.transform
и classes.transformedstringtransform.var headroom = new Headroom(header, {
classes: {
initial: "headroom",
transformed: "headroom--transformed"
}
});
scroller с кастомным
событиемscroll, но и кастомные события для обновления состояния
шапки:var headroom = new Headroom(header, {
scroller: function() { return document.querySelector(".custom-scroll"); }
});
headroom.init();
document.querySelector(".custom-scroll").addEventListener("scroll", function() {
headroom.update();
});
var headroom = new Headroom(header, {
tolerance: { up: 5, down: 20 },
offset: 100,
scroller: function() { return document.querySelector(".scrollable-container"); },
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top",
bottom: "headroom--bottom",
notBottom: "headroom--not-bottom"
},
onInitialize: function() { console.log("Инициализация"); },
onPin: function() { console.log("Показана"); },
onUnpin: function() { console.log("Скрыта"); },
onTop: function() { console.log("На верху"); },
onNotTop: function() { console.log("Прокрутка вниз"); }
});
headroom.init();