我正在尝试这样做,以便当某些文本项停止与深色背景重叠时,它们将在用户滚动时逐个更改颜色。所有的文本项都是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));
}
没有任何控制台错误,但代码没有做任何事情。