微信小程序 - 解决弹框遮罩层的滚动穿透问题

这篇具有很好参考价值的文章主要介绍了微信小程序 - 解决弹框遮罩层的滚动穿透问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小程序滚动穿透,小程序,微信小程序,小程序

在小程序页面里有自定义弹窗时候,发现弹窗外滚动的时候,底部背景页面也会跟随滚动。面对这个bug,我们可以用下面几种方法实现:

方法1:catchtouchmove=“true”

可以实现弹框背景不滚动,但是也会导致弹框自身无法滚动。
如果你的弹窗本身是不需要滚动的,用这个方法是极佳的。
ps:开发工具测试无效,真机上有效文章来源地址https://www.toymoban.com/news/detail-580999.html

<!-- 页面 -->
<view class="page">
    <button bindtap="showAction">点击出现弹框</button>
</view>

<!-- 弹框 -->
<view catchtouchmove="true">
  <view class="mask" wx:if="{{popup}}"></view>
  <view class="half-screen-dialog {{popup?'half-screen-dialog_show':''}}"></view>
</view>
.page {
  width: 100%;
  height: 20000rpx;
  background-color: pink;
}

方法2:使用scroll-view包裹底部内容区

<!-- 页面 -->
<scroll-view class="page" scroll-y="{{true}}" scroll-x="{{false}}" enhanced="{{true}}" bounces="{{false}}">
  <view style="height: 3000rpx;background: green;">
    <button bindtap="showAction">点击出现弹框</button>
  </view>
</scroll-view>

<!-- 弹框 -->
<view>
  <view class="mask" wx:if="{{popup}}"></view>
  <view class="half-screen-dialog {{popup?'half-screen-dialog_show':''}}">
    <view style="height: 3000rpx;background: red;"></view>
  </view>
</view>
.page {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  overflow-y: auto;
}

方法3:弹框出现的时候,将底部背景页面的高度设置为100vh

<!-- 页面 -->
<view class="{{popup ? 'page-overflow-hidden' : ''}}">
  <view style="height: 3000rpx;background: green;">
    <button bindtap="showAction">点击出现弹框</button>
  </view>
</view>

<!-- 弹框 -->
<view>
  <view class="mask" wx:if="{{popup}}"></view>
  <view class="half-screen-dialog {{popup?'half-screen-dialog_show':''}}">
    <view style="height: 3000rpx;background: red;"></view>
  </view>
</view>
.page-overflow-hidden {
  height: 100vh;
  overflow: hidden;
}

相同的弹框样式如下:

.mask {
  position: fixed;
  z-index: 1000;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.6);
}

.half-screen-dialog {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  height: 75%;
  z-index: 5000;
  line-height: 1.4;
  background-color: #FFFFFF;
  border-top-left-radius: 24rpx;
  border-top-right-radius: 24rpx;
  overflow-y: auto;
  transition: transform .3s;
  transform: translateY(100%);
}

.half-screen-dialog_show {
  transform: translateY(0%);
}

相同的js如下:

Page({
  data: {
    popup: false
  },
  showAction() {
    this.setData({
      popup: true
    });
  },
})

到了这里,关于微信小程序 - 解决弹框遮罩层的滚动穿透问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决问题:Element ui组件中Dialog对话框只显示遮罩层,不显示弹框内容

    以下是Dialog 对话框的基本用法: 这个时候页面只显示了遮罩层,但是不显示弹框的内容,查阅文档后,发现有这样一条: append-to-body的默认值是false,所以需要自己在el-dialog标签中手动设置为true,  加上之后弹框内容就可以显示了。

    2024年02月06日
    浏览(58)
  • 解决element-ui组件库中dialog组件只显示遮罩层,未显示弹框的问题

    以下是直接粘贴的组件--基础用法 el-button type=\\\"text\\\" @click=\\\"dialogVisible = true\\\"点击打开 Dialog/el-button el-dialog   title=\\\"提示\\\"   :visible.sync=\\\"dialogVisible\\\"   width=\\\"30%\\\"   :before-close=\\\"handleClose\\\"   span这是一段信息/span   span slot=\\\"footer\\\" class=\\\"dialog-footer\\\"     el-button @click=\\\"dialogVisible = false\\\"取 消

    2024年02月03日
    浏览(87)
  • el-dialog嵌套使用,只显示遮罩层的问题

    我是不建议嵌套使用的,平级也能调用,层级是按点击顺序的 这两个方法还是有用的,比如跳转其他页面保留el-dialog显示状态,可以使用 如果有用,请给我点赞收藏,我会很开心,谢谢

    2024年01月19日
    浏览(64)
  • layui弹框(上)- 基础参数:弹出层、多按钮、对齐方式、遮罩层(透明度)、定时关闭...的集合

    一、使用layui的第一步:引用layui的js和css文件 link rel=\\\"stylesheet\\\" href=\\\"layui/css/layui.css\\\" / script src=\\\"layui/layui.js\\\"/script 您也可以引用网络资源 script src=\\\"layui.js:https://heerey525.github.io/layui-v2.4.3/layui/layui.js\\\"/script link rel=\\\"stylesheet\\\" href=\\\"https://heerey525.github.io/layui-v2.4.3/layui/css/layui.css\\\" 二、引

    2024年02月02日
    浏览(65)
  • 微信小程序 | 莫名出现vConsole弹框按钮怎么解决?

    问题:在微信开发者工具上真机预览时发现莫名出现了个vConsole弹框按钮,还以为出现了问题,查找微信开发社区后解决了这个问题 解决步骤如下: 在微信开发者工具中选中 真机预览----二维码真机调试 ,手机扫码之后将进入到手小程序机预览界面 点击开发调试 选择开发调

    2024年04月23日
    浏览(157)
  • 【uniapp】禁止遮罩层下的页面滚动解决办法

    不少朋友在日常工作中都会遇到需要自定义弹窗的时候,当开启弹窗后,却发现存在弹窗下的页面依旧可以被触发滚动的问题,以下是相关的解决方法。 根据是否打开的弹窗状态,对最外层 view 设置 height 和 overflow: 这个方法通过对页面设置高度来限制底层页面滚动的问题,

    2024年02月07日
    浏览(54)
  • elemtui 提示消息element-ui message被遮罩层覆盖解决方法

    elemtui 提示消息element-ui message被遮罩层覆盖解决方法   问题原因:  最外层的遮罩z-index设置太大  默认 的el-dialog的z-index是2000起的, 而我们的 message 低于2000的,因此将 el-dialog 的z-index设置低于message就 可以 了  

    2024年02月07日
    浏览(75)
  • 微信小程序实现各类弹框、自定义弹框

    目录 wx.showModal  wx.showToast wx.showLoading wx.showActionSheet 自定义弹框 功能介绍:常用于显示需用户操作的信息框,用户可进行确认、取消或输入内容。 常用参数介绍: title:提示的标题: content:提示的内容: showCancel:是否显示取消按钮 cancelText:取消按钮的文字 confirmText:

    2024年01月18日
    浏览(65)
  • 微信小程序(原生)封装弹框组件

    小程序封装原生弹框组件(一个弹框,点击确定关闭弹框,有需要的直接复制哦) 上面是组件的内容,下面是引用方法 首先第一步在app.json或者单文件json文件引入 我用的比较多就在app.json引入的 下面是文件使用方法: 只需要子啊data中控制这两个属性就可以了,喜欢的点个赞

    2024年02月11日
    浏览(63)
  • 解决el-dialog弹出时,页面抖动,右侧会缩小的问题(即滚动条被遮罩层覆盖的问题)

    在弹出el-dialog时,会发现弹出框弹出时,页面会抖动,滚动条被遮罩层覆盖直接没有滚动条了,导致页面缩小了几个像素点(滚动条的宽度);体验感不好,会影响到页面的布局,且页面有的fixed定位的内容也会随着遮罩层的出现移动几个像素点; 后来我找了一下页面具体样

    2024年02月14日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包