关于微信小程序自定义导航栏对下拉刷新的影响

4,257 阅读2分钟

前言

第一次写,难免不足之处,请多指教。

关于微信小程序自定义导航栏

由于微信小程序原生导航栏只能写文字,而对于一些以内容为卖点的公司,需要将导航栏(丧)玩(心)出(病)花(狂)来,就需要用微信的自定义 "navigationStyle": "custom"。这个操作是在json文件配置中,用它可以实现导航栏的自定义。

但是需要注意手机屏幕的适配。

自定义导航栏对下拉刷新的影响

自定义导航栏很好,但是带来了一个不小的问题,就是对微信官方下拉刷新有视觉效果上的影响:会在下拉刷新的动画中将自定义为fixed定位的navigator也同时拉下来。视觉上很差。给人感觉很不好。

解决方案

  1. 用scroll-view 模拟下拉刷新。

    优点:解决navigator被拉下来。

    缺点:需要自己去模拟官方的下拉刷新操作,且在ios上会有回弹效果,会造成scrollTop有负值,且动画生硬,需要使用animate的方法。后面的使用中,又发现其他未知bug(不排除是自己代码问题)。

  2. 禁止页面滑动,在顶部单独出现一个定位的刷新的元素。具体效果可以参考京东金融app首页。(只是参考效果)此处需要用到wxs。

    优点:既解决了navigator被拉下来,也解决了scroll-view模拟的诸多麻烦。

    缺点:需要在每个需要刷新的页面引。

  3. iOS和android区别处理。

    优点: ios上目前不会出现此问题,可以直接用原生,android忽略此问题。如果用户群体以iOS居多,这种办法可以最大程度的减少时间。

    缺点:android 用户体验较差。

总结

业内的优秀小程序目前的方案大多是第三种,因为官方的始终体验更好,且bug少,省心。

凡事都有两面性,自定义导航栏满足了设计的需求,但是却在体验上没有做到最好。所以针对此问题,大家需要酌情考虑需求,选择最优方案即可。

顺带提一句,微信官方在社区6月回复已经开始修复此类问题,大家可以等官方的修复。