我试图更改我网站上的汉堡菜单,每次它位于具有浅色背景的部分顶部以提高可见度。我尝试使用交叉点观察器,该解决方案似乎有效,但是它在滚动时触发得太早,实际上该部分与菜单相交之前。
我是十字路口观察者的新手,我试图在网上找到一些有用的东西,但运气不佳。
const body = document.querySelector('body')
const sections = body.querySelectorAll('.change-menu')
const options = {
root: null,
threshold: 0,
rootMargin:'-40px 0px -80% 0px'
}
const observer = new IntersectionObserver((entries,observer) => {
entries.forEach(entry => {
if(entry.isIntersecting) {
document.querySelectorAll('.menu-item').forEach(bar => {
body.classList.add('black')
})
} else {
document.querySelectorAll('.menu-item').forEach(bar => {
body.classList.remove('black')
})
}
})
}, options)
sections.forEach(section => {
observer.observe(section)
})
这是我的问题示例的 jsfiddle:
https://jsfiddle.net/bc7w8zt1/
任何人都可以阐明它吗?