1. Obtain the available window height
const {
windowHeight } = wx.getSystemInfoSync()
2. Add target element layout position query request
const query = wx.createSelectorQuery()
query.select('#myElement').boundingClientRect()
3. Determine whether the element is within the visible area
if ((top < windowHeight) && (top + height > 0)) {
console.log('元素在可视区域出现')
} else {
console.log('元素在可视区域消失')
}
4. Complete demo code
<view>
<view class="content-block" />
<view class="content-block" />
<view id="myElement" class="content-block" style="background-color: lightcoral;" />
<view class="content-block" />
<view class="content-block" />
</view>
Page({
onReady: function () {
const {
windowHeight } = wx.getSystemInfoSync()
setInterval(() => {
const query = wx.createSelectorQuery()
query.select('#myElement').boundingClientRect()
query.exec(rect => {
const {
top, height } = rect[0]
if ((top < windowHeight) && (top + height > 0)) {
console.log('元素在可视区域出现')
} else {
console.log('元素在可视区域消失')
}
})
}, 2000)
}
})
.content-block {
margin-bottom: 40rpx;
width: 100%;
height: 700rpx;
background-color: lightblue;
}