【发布时间】:2019-02-25 12:46:56
【问题描述】:
我正在尝试使某些文本项停止与深色背景重叠,它们将在用户滚动时逐个更改颜色。所有的文本项都是position: fixed
编辑:MDN 文档说(强调我的):
Intersection Observer API 提供了一种异步观察的方法 目标元素与 祖先 的交集的变化 元素
我认为这意味着没有办法解决我的问题,因为我要监视重叠的元素不是我在选项对象中指定的 root 的子元素。
如果重叠元素不是另一个元素的子元素,有什么方法可以检测重叠?
if ('IntersectionObserver' in window) {
const options = {
root: document.getElementById('flow-landing'),
rootMargin: '0px',
threshold: 0
}
var callback = function(entries, observer) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.color = "white";
}
else {
entry.target.style.color = null;
}
});
};
const observer = new IntersectionObserver(callback, options);
var targets = [Array.from(document.querySelectorAll('.social-item')), Array.from(document.querySelectorAll('.additional-item'))].flat();
targets.forEach(target =>
observer.observe(target));
}
没有任何控制台错误,但代码没有做任何事情。
【问题讨论】:
-
来自 MDN 的完整引用如下:"Intersection Observer API 提供了一种异步观察目标元素与祖先元素或顶部元素的交集变化的方法级文档的视口。” 将
document.getElementById('flow-landing')替换为null。将整篇文章至少阅读两次,因为有时很难将解释形象化。
标签: javascript intersection-observer