sne*_*mer 3 javascript dom intersection-observer
如果我将该threshold
值配置为大于0的任何值,则isIntersecting
在目标离开视口时永远不会返回false。但是,如果我将默认阈值保留为0,isIntersecting
则在目标退出视口时将返回false。请参阅下面的示例并删除threshold: 1.0
。
https://jsfiddle.net/snewcomer24/get0a4xr/1/
这似乎是不同的行为。有人对此行为有解释吗?
这是因为仅当元素超过阈值比率时才调用观察者回调。
默认情况下,阈值为0,因此在元素进入或离开视口时调用回调。当您更改阈值1.0,你的回调,而不是调用的时候,元素变成100%的可见光,或不再是100%可见。
当元素停止为100%时,它将显示为99%左右,并且仍为isIntersecting
as true
。然后,当元素离开视口时,它与您的观察者无关(因为您的阈值不为0),因此不会再次调用您的回调。
如果您关心元素变为100%可见并离开视口,则可以传递一个数组作为阈值(如[0, 1.0]
),并且当这些比例中的任何一个超过时,您的回调将被调用。
https://jsfiddle.net/wzst4jx5/12/
顺便说一句:我本来以为entry.isIntersecting
只是简写entry.intersectionRatio > 0
。但是我发现当某些东西缓慢进入视口时isIntersecting
,Chrome(65)可以报告为true,但是报告intersectionRatio
为0。
归档时间: |
|
查看次数: |
1862 次 |
最近记录: |