kra*_*ave 8 javascript intersection-observer
我试图通过交集观察者调用回调.
我想要的target是style: "position: fixed",并通过移动它
style.top.
我还指定了根元素,它是目标的祖先style: "position: relative".
但是当目标和观察者相交时,不会触发回调函数.
我错过了一些限制吗?
这是我输入的内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>IO</title>
</head>
<body>
<div style="height: 200px;width: 100%;background: violet" class="upper">aaa</div>
<div style="position:relative;height: 200px;width: 100%;background: blueviolet" id="middle">bbb
<div id="target" style="position:fixed;top: 0px;width: 50px;height: 50px;background: firebrick">ccc</div>
</div>
<script>
let options = {
root: document.getElementById("middle"),
rootMargin: '0px',
threshold: 0
};
let observer = new IntersectionObserver(entry => {
console.log("observer's acting.")
}, options);
let target = document.getElementById("target");
observer.observe(target);
let stepping = 0;
let cb = () => {
target.style.top = stepping + 'px';
stepping += 4;
if (stepping < 300){
setTimeout(cb, 100);
}
};
window.addEventListener("click", () => {
cb();
})
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是一个codepen演示: codepen演示
您可以单击页面中的任意位置以开始移动ccc块.
元素position: fixed相对于视口定位,视口移动。因此,固定定位的元素会在您滚动时“移动”。即使#target是 的孩子#middle,我相信 IntersectionObserver,无论它在引擎盖下使用什么来计算是否target进入/离开root,都不会触发回调,因为target位于文档流之外。
这是一个相关的问题。与此问题相关的互联网上没有太多内容:https ://bugs.chromium.org/p/chromium/issues/detail?id=653240
注意:position: absolute在目标上设置确实会在进入和离开视口时触发回调。
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |