Uniapp微信小程序实现,选项卡内容可左右滑动思路,且选项卡能吸顶

366 阅读1分钟

如题,工作内容的一个需求,记录一下思路和遇到的问题。 需求如下: (导航条就是选项卡) image.png

核心功能两个: 一是吸顶。 二是左右滑动。

一、吸顶

流畅吸顶方式: 顶部使用fixed,选项卡使用sticky,据说sticky有些手机不兼容。目前是没遇到过。

卡顿吸顶方式:

  1. 监听滚动条,到达一定位置把选项卡布局变为fixed。
  2. 事先隐藏一个选项卡,监听滚动条,到达一定位置变更选项卡z-index。

总结:监听滚动条赋值试过的手机都卡。

二、左右滑动

流畅左右滑动: swiper嵌套普通的view,swiper随view内容变化高度。数据使用onReachBottom加载

卡顿左右滑动: swiper嵌套垂直定高scroll-view。数据使用@scrolltolower加载。 问题:

  1. 存在两个滚动条,导致内外切换滚动条会卡顿。
  2. 需计算scroll-view何时可滚动。
  3. ios回弹效果体感很差。

三、可能遇到的问题

需要判断吸顶的scrollTop值

  1. 页面渲染结束,获取选项卡的top和height。
  2. 吸顶时的scrollTop=选项卡top值-选项卡height(吸顶时选项卡脱离文档流)-margin(如果有的话)。

如果值错误,请先保证数据变更之后的页面渲染已经结束,特别是子组件。数据变更可能会导致子组件高度不对。

四、其他

注:实现遇到的兼容问题

ios获取子组件高度包含了上下margin,安卓则不包括margin。注意适配。