uni-app 时间日期选择器,h5 滚动穿透问题

uni-app 时间日期选择器,h5 滚动穿透问题

时间日期选择器,h5 滚动穿透问题
1 回复

更多关于uni-app 时间日期选择器,h5 滚动穿透问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,H5 平台使用时间日期选择器(如 uni-datetime-picker 或第三方组件)时,确实可能遇到滚动穿透问题。这通常发生在选择器弹出层出现后,底层页面仍然可以滚动,影响用户体验。

原因分析: 滚动穿透主要是由于弹出层未正确阻止底层页面的滚动事件。在 H5 端,弹出层通常以 position: fixed 覆盖全屏,但底层页面的 body 或容器元素可能仍响应滚动。

解决方案:

  1. 使用 [@touchmove](/user/touchmove).stop 阻止触摸事件
    在弹出层的根元素上添加 [@touchmove](/user/touchmove).stop.prevent,可阻止触摸滚动事件冒泡到底层。
    示例:

    <view class="picker-modal" [@touchmove](/user/touchmove).stop.prevent>
      <!-- 选择器内容 -->
    </view>
    
  2. 动态控制底层页面溢出
    在弹出层打开时,通过 document.body.style.overflow = 'hidden' 禁用全局滚动;关闭时恢复。需注意平台兼容性,可在 mountedshow 事件中处理。
    示例:

    // 打开选择器时
    document.body.style.overflow = 'hidden';
    // 关闭时恢复
    document.body.style.overflow = '';
回到顶部