我们都知道headroom.js,这是一个很好的小部件,用于在向下/向上滚动时显示/隐藏标题。我会使用这个小部件,但我的用例略有不同。
我现在正在尝试使用 IntersectionObserver 构建它。我的根元素是null
,所以它指的是完整的文档。
// Create observer with callback and config
observer = new IntersectionObserver(handleIntersect, config);
// Observe .as-wrapper
observer.observe(section);
我的 handleIntersect() 函数调用 sticky() 如下所示:
function sticky(target, entry) {
let prevRatio = 0.0;
console.log("call sticky function");
if (entry.isIntersecting) {
console.log('is interacting');
if (entry.intersectionRatio > prevRatio) {
console.log("Your are scrolling down! Hide Header!");
} else {
console.log("Your are scrolling up! Show Header!");
}
prevRatio = entry.intersectionRatio;
}
}
函数sticky() 被正确执行。但是,观察者仅触发 1 次。
每次向上或向下滚动时,我该怎么做才能让观察者调用?
IntersectionObserver 是这里的正确选择吗?什么是芳香和透明的替代品?目标是根据滚动方向显示或隐藏任何元素。