小程序实现“类吸顶”效果交流处

作者在小程序中尝试实现类似手机通讯录的吸顶效果,已用html+css在浏览器实现,但在小程序中遇阻。使用createIntersectionObserver在模拟器上效果尚可,安卓手机预览时却严重卡顿,寻求更优解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是个请教贴

问题描述

前不久参考了手机通讯录、QQ联系人列表等展示效果,意欲在小程序中实现同样类吸顶效果(暂时就这么称呼吧,不知道有没有什么专业术语来描述这一样式)。目前已经使用html + css实现了浏览器端的效果,主要是采用了csssticky,问题在于微信不支持这个方式。无奈之下,各种尝试后,发现了createIntersectionObserver,通过对标题栏的各种状态操作,实现类吸顶效果,在模拟器上预览还凑活的过去,一旦使用安卓手机预览,就卡到无法忍受的地步了。

现状

html + css实现方式可见此处sticky_header

html + css 实现 sticky_header

小程序中通过createIntersectionObserver实现的效果如下,同时可参考代码片段sticky_header

createIntersectionObserver 实现 sticky_header

吐露心声

在这里请教诸位同道中人,是不是我在小程序中的方向走错了,不知大家有什么好的实现方式或者idea,还望诸位不吝赐教。

写在最后

放一下小程序实现时的关键性代码,节省大神们的时间

this._observerFooter = wx.createIntersectionObserver(this, { thresholds: [1], observeAll: true });
this._observerHeader.relativeToViewport().observe('.sticky_sentinel--top', (res) => {
  if (res.intersectionRatio == 0 && res.boundingClientRect.top < 0) {
    console.log('----item--allhidden--', res);
    this.setData({
      ['positions[' + res.id.replace('sticky_sentinel--top', '') + ']']: 'fixed'
    })
  }
  if (res.intersectionRatio > 0 && res.intersectionRatio != 1) {
    console.log('----item--2show--', res);
    this.setData({
      ['positions[' + res.id.replace('sticky_sentinel--top', '') + ']']: 'absolute top'
    })
  }
  console.log(this.data);
});

源代码在两处链接均可获得,谢谢大家了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值