1 回答
TA贡献1877条经验 获得超1个赞
只有第一个发生了变化,因为这就是您通过仅解构第一个数组元素来更改颜色函数的目标:
const [entry] = entries;
但是,InteractionObserver回调不是针对每个条目调用的,而是针对同时触发的所有条目调用的;因此该entries数组包含所有被观察的项目,您需要isIntersecting像这样检查属性:
const changeColor = function(entries) {
entries.forEach(entry => {
if(entry.isIntersecting) {
entry.target.style.background = 'blue';
} else {
entry.target.style.background = 'red';
}
})
}
来自 MDN 文档
let callback = (entries, observer) => {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// target element:
// entry.boundingClientRect
// entry.intersectionRatio
// entry.intersectionRect
// entry.isIntersecting
// entry.rootBounds
// entry.target
// entry.time
});
};
添加回答
举报