I found this codepen example using locomotive scroll and implementing sticky header.
Once I click and drag the smooth scrollbar, the sticky header stops working . What could be the reason ?
let options = {
el: document.querySelector('#js-scroll'),
smooth: true,
getSpeed: true,
getDirection: true,
reloadOnContextChange:true
}
const header = document.getElementById('header');
let hidden = false,static = true;
const scroll = new LocomotiveScroll(options);
scroll.on('scroll',(instance)=>{
let headerHeight = header.getBoundingClientRect().height;
if(instance.direction === 'down' && static){
if(instance.scroll.y > headerHeight){
header.classList.add('pinned');
static = false;
}
}
if(instance.direction === 'up' && !static){
if(instance.scroll.y <= headerHeight){
header.classList.remove('pinned');
static = true;
}
}
if(instance.direction === 'down' && !hidden){
if(instance.scroll.y>(headerHeight+200)){
//console.log('hidden');
header.classList.remove('pinned');
header.classList.add('unpinned');
hidden = true;
}
}
if(instance.direction === 'up' && hidden){
//console.log('show');
header.classList.remove('unpinned');
header.classList.add('pinned');
hidden = false;
}
});
https://codepen.io/limedon/pen/wvobMQO
On clicking and dragging, instance.direction changes to "left/right" instead of "up/down".