首页 > 编程语言 >微信小程序中由scroll-view中使用fixed定位的元素引发的bug~

微信小程序中由scroll-view中使用fixed定位的元素引发的bug~

时间:2023-06-21 13:44:51浏览次数:36  
标签:定位 滚动 微信 页面 bug fixed scroll view

在微信小程序中,scroll-view中使用position:fixed定位的元素会失效,不再相对于根元素来定位,而是相对scroll-view定位。
经过查证,是由于scroll-view中的 refresherEnabled 导致的fixed失效

解决

前提:页面有下拉刷新需求,并且其中的fixed定位Modal元素不好提取到父组件中控制展示和隐藏。
解决过程

  • 首先尝试了使用view替换scroll-view
    给view标签设置overflow-y: auto;然后使用小程序自己的下拉刷新,在index.config.json中添加
"enablePullDownRefresh": true,
"backgroundTextStyle": "dark",

页面中使用onPullDownRefresh方法即可。

But...又出现了新的问题。
因为页面中使用的自定义navbar,导致下拉刷新的控件被自定义的navbar遮挡。且微信官方不支持修改刷新控件的位置。
最终放弃此方案。

  • 给fixed定位的Modal传参,当Modal展示时,禁用scroll-view的滚动(可行)
    依然使用scroll-view 代码如下
<ScrollView
  refresherEnabled
  refresherTriggered={refresherTriggered}
  onRefresherRefresh={onRefresherRefresh}
  scrollY={canScroll}
  scrollTop={scrollTop}
>

canScroll:是否可滚动
scrollTop:距离顶部

注意
将canScroll设置为false前,需要先将页面滚动到顶部,否则页面滚动一部分之后,展示Modal,依然以滚动前的位置定位。

const handleScroll = (visible) => {
  if (!visible) {
    // 当弹出层显示时,滚动到顶部
    setScrollTop(Math.random())
  }
  setCanScroll(e)
}

标签:定位,滚动,微信,页面,bug,fixed,scroll,view
From: https://www.cnblogs.com/ZerlinM/p/17496037.html

相关文章

  • 北森HR SaaS里的账号能否自动同步到到AD域、钉钉/飞书/企业微信里?
    方案背景:某生物制药公司使用北森HRSaaS软件来提高人力资源部门的工作效率,同时公司内部还有微软AD域账号及钉钉账号,三种账号源未打通,彼此之间数据割裂且存在信息不一致的情况。目前身份流转的路径是:新员工的入转调离由HR在北森HRSaaS内更新后,再由IT管理员手动同步至微软AD......
  • 网站接入微信支付后如何实现退款和取消预约?
    需求取消预约分两种情况:未支付取消订单,直接通知医院取消预约状态并更新相关数据,然后修改平台订单状态已支付取消订单,退款给用户并在数据库中记录退款记录,通知医院取消预约状态并更新相关数据,然后修改平台订单状态第01章-未支付取消预约1、后端接口1.1、ControllerFrontOr......
  • MySQL一个关于derived table的bug描述与规避
    关联文章:MySQL对derivedtable的优化处理与使用限制一、Bug描述同事遇到一个有意思的语句,说一条SQL在MySQL8.0.25版本运行出的结果明显与给定的where条件不符,而在8.0.26版本上是正常的,语句上加了一个无关的用户变量后在8.0.25版本上结果才是正确的,想不通这是怎么回事,这么有......
  • 2023-06-20 [微信小程序开发者工具] ? Enable IDE Service (y/N) 
    前言:小程序代码运行在新电脑,连hbuilderx和微信开发者工具都是新的,报错:[微信小程序开发者工具]?EnableIDEService(y/N)。原因:hbuilderx无法启动微信开发者工具,再具体点是因为微信开发者工具的服务端口号没有打开。解决方案:打开微信开发者工具,找到【设置】==》【安......
  • uni-app微信小程序路由传参数据截断问题解决
    跳转页面:因为数据接受页面是富文本编辑器接收,所以先是将数据双引号处理了。数据太多太长,跳转页面只要用encodeURIComponent()函数将其数据处理后传过去constdetails=this.oneform.text.replace(/"/g,'\'')this.$tab.navigateTo(`/pages/common/editor/editor?details=${e......
  • 快讯 | ShowMeBug入选人力资源智享会《TPG红宝书》
    近日,ShowMeBug入选人力资源智享会《2022-2023 HR年度采购指南暨智享会人力资源供应商价值大奖分类榜单》,亦被称为《ThepurchasingGuide》,简称《TPG红宝书》(以下简称《红宝书》)。《红宝书》由人力资源智享会编写并发布,目的在于成为HR采购人力资源相关服务和产品的工具书,有效帮......
  • 微信小程序,wx.getUserProfile接口将被收回,新的头像获取方式永久保存
    微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/新的获取头像方式:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html这种方式,返回的路径是返回的临时路径,保存在本地。如果要永久保存的,我的做法是通过FileSys......
  • 微信小程序开发实现星星评分组件
    微信小程序开发实现星星评分组件问题背景小程序开发中经常会碰到需要评分的场景,比如用户满意度调查等,本文介绍微信小程序实现打星评分的一种方案。实现效果如下:截图2问题分析话不多说,直接上代码。(1)index.wxml文件代码如下:<viewclass="vertical-star-item">......
  • 【Fidder网络抓包+Python爬虫】下载微信小程序视频
    首先声明本篇博客以学习为目的,侵权即删。文章目录1.Fidder抓包1.1在电脑上打开微信小程序视频播放页以及Fidder软件1.2点击视频播放按钮,并查看Fidder抓到的数据包2.Python爬虫2.1视频下载2.2视频合并2.3完整代码3.写在最后1.Fidder抓包       关于fidder软件的安......
  • uniapp企业微信web-view父子通信问题
    项目背景:开发工具为HBuilderX,框架为uniapp,开发移动端的Web应用,在企业微信中使用(自建应用),Web开发的应用,不是小程序。需求:页面中用到<web-view>组件,加载其他系统的页面(有跨域),需要在父子页面之间相互通信。这里通信的东西其实就是获取定位,通过uniapp获取用户定位信息,传递给<web-view......