微信小程序之判断目标元素是否在可视区域内

1、获取可使用窗口高度
const { windowHeight } = wx.getSystemInfoSync()
2、添加目标元素布局位置查询请求
const query = wx.createSelectorQuery()
query.select('#myElement').boundingClientRect()
3、判断元素是否在可视区域内
// windowHeight = top(目标元素刚进入可视区域)
// windowHeight - top = height(目标元素完全进入可视区域)
// top = 0 (目标元素刚离开可视区域)
// top + height = 0 (目标元素完全离开可视区域 )

if ((top < windowHeight) && (top + height > 0)) {
  console.log('元素在可视区域出现')
} else {
  console.log('元素在可视区域消失')
}
4、完整 Demo 代码
<!--pages/demo.wxml-->
<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>
// pages/demo.js
Page({
  /**
   * Lifecycle function--Called when page is initially rendered
   */
  onReady: function () {
    const { windowHeight } = wx.getSystemInfoSync()

    setInterval(() => {
      const query = wx.createSelectorQuery()
      query.select('#myElement').boundingClientRect()

      query.exec(rect => {
        const { top, height } = rect[0]

        // windowHeight = top(目标元素刚进入可视区域)
        // windowHeight - top = height(目标元素完全进入可视区域)
        // top = 0 (目标元素刚离开可视区域)
        // top + height = 0 (目标元素完全离开可视区域 )

        if ((top < windowHeight) && (top + height > 0)) {
          console.log('元素在可视区域出现')
        } else {
          console.log('元素在可视区域消失')
        }
      })
    }, 2000)
  }
})
/* pages/demo.wxss */
.content-block {
  margin-bottom: 40rpx;
  width: 100%;
  height: 700rpx;
  background-color: lightblue;
}
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值