IntersectionObserver.disconnect
与页面显示区域的相交区域并不准确代表用户可见的区域,因为参与计算的区域是“布局区域”,布局区域可能会在绘制时被其他节点裁剪隐藏(如遇祖先节点中 overflow 样式为 hidden 的节点)或遮盖(如遇 fixed 定位的节点)。
解释:停止监听,回调函数将不再触发。
方法参数
无
示例
扫码体验
请使用百度APP扫码
图片示例
代码示例
<view class="wrap">
<scroll-view class="scroll-view" scroll-y>
<view class="scroll-area" style="{{appear ? 'background: #ccc' : ''}}">
<text class="notice">向下滚动让小球出现</text>
<!-- 占位元素 -->
<view class="filling"></view>
<!-- 小球 -->
<view class="ball"></view>
</view>
</scroll-view>
<view class="result-item border-bottom">
<view class="result-keyword">top</view>
<view class="result-value">{{data.top}}</view>
</view>
<view class="result-item border-bottom">
<view class="result-keyword">right</view>
<view class="result-value">{{data.right}}</view>
</view>
<view class="result-item border-bottom">
<view class="result-keyword">bottom</view>
<view class="result-value">{{data.bottom}}</view>
</view>
<view class="result-item">
<view class="result-keyword">left</view>
<view class="result-value">{{data.left}}</view>
</view>
<view class="result-item">
<view class="result-keyword">width</view>
<view class="result-value">{{data.width}}</view>
</view>
<view class="result-item">
<view class="result-keyword">height</view>
<view class="result-value">{{data.height}}</view>
</view>
<button type="primary" bindtap="disconnect">停止监听</button>
</view>
Page({
data: {
data: ''
},
onReady() {
const intersectionObserver = swan.createIntersectionObserver(this,{
selectAll: true
});
intersectionObserver.relativeTo('.scroll-view').observe('.ball', res => {
this.setData('data', res.intersectionRect);
console.log(res.intersectionRect.left); // 相交区域的左边界坐标
console.log(res.intersectionRect.top); // 相交区域的上边界坐标
console.log(res.intersectionRect.width); // 相交区域的宽度
console.log(res.intersectionRect.height); // 相交区域的高度
});
this.intersectionObserver = intersectionObserver;
},
disconnect() {
this.intersectionObserver && this.intersectionObserver.disconnect();
}
});