javascript - IntersectionObserver 是否在加载时弄乱了导航栏?
问题描述
怎么回事:
没有背景颜色是我想要的导航状态: https ://i.stack.imgur.com/mcc4A.png
但随机呈现深色背景: https ://i.stack.imgur.com/P0KGA.png
或者,也随机呈现白色背景颜色: https ://i.stack.imgur.com/0PgPt.png
我已经尝试实现 IntersectionObserver 来跟踪其中一个部分(折叠下方)中的 div 以在深色和浅色类之间切换
let observerSecTwoTop = new IntersectionObserver(entries => {
if (entries[0].boundingClientRect.bottom < 0) {
nav.classList.remove('solid__background__light');
nav.classList.add('solid__background__dark');
navMenuItem.forEach(e => e.classList.add('nav__links__dark'));
} else if (entries[0].boundingClientRect.bottom > 0) {
nav.classList.add('solid__background__light');
nav.classList.remove('solid__background__dark');
navMenuItem.forEach(e => e.classList.remove('nav__links__dark'));
}
});
let observerSecTwoBottom = new IntersectionObserver(entries => {
if (entries[0].boundingClientRect.bottom < 0) {
nav.classList.add('solid__background__light');
nav.classList.remove('solid__background__dark');
navMenuItem.forEach(e => e.classList.remove('nav__links__dark'));
} else if (entries[0].boundingClientRect.bottom > 0) {
nav.classList.remove('solid__background__light');
nav.classList.add('solid__background__dark');
navMenuItem.forEach(e => e.classList.add('nav__links__dark'));
}
});
observerSecTwoTop.observe(document.querySelector('#top--track'));
observerSecTwoBottom.observe(document.querySelector('#bottom--track'));
#top--track 和 #bottom--track 是我正在跟踪的两个 div,用于在滚动到页面中的特定点时切换导航栏颜色。
这是页面本身:https ://tombrewsviews.github.io/portfolio/
回购在此处公开:https ://github.com/tombrewsviews/portfolio 我感谢任何帮助或解释我在这里缺少什么
谢谢!
解决方案
我通过添加额外的检查解决了这个问题,即观察者 isIntersecting 与 track 元素。我认为正在发生的事情,初始负载也被视为事件触发器并通过函数运行。
else if (
entries[0].boundingClientRect.bottom > 0 &&
entries[0].isIntersecting
推荐阅读
- php - /posts/{id} 路由在 Laravel 中阻塞 /posts/create
- python - 使用 pyinstaller 将 celery worker 文件转换为二进制文件
- javascript - 如何将弹出窗口更改为基本页面
- sas - Base SAS 中的日期格式
- c# - 如何获得聊天机器人对话
- autoit - 从命令行运行 Autoit 并查看错误/结果
- xampp - 子域的虚拟主机,没有尾随目录
- java - 如何将参数“t”替换为“className”?
- python - 2个不同的附加函数到链表的时间复杂度?
- postgresql - 将 Azure AD b2c 用户迁移到 Postgres 数据库