不呲香菜的猫 2023-04-11 19:10 采纳率: 16.7%
浏览 15

uniapp中使用组件uni-popup

uniapp中使用组件uni-popup的时候在弹窗上滚动但穿透到页面了该怎么有效解决 急

  • 写回答

2条回答 默认 最新

  • qaqlong 2023-04-11 19:37
    关注

    在 uni-popup 这个组件中,默认情况下,背景区域是没有滚动的,当弹窗出现时,我们手指滑动的事件也会同时被背景区域所接收,导致页面穿透问题。

    为了解决这个问题,我们需要做两件事情:

    阻止底层区域的滚动
    可以使用 catchtouchmove 事件来阻止底层的区域滚动。在弹出层的容器组件上添加这个事件,并且调用 preventDefault 方法来禁用滚动。示例如下:

    <view class="popup-wrapper" catchtouchmove="preventPageScroll">
        <!-- 组件的内容 -->
    </view>
    methods: {
        preventPageScroll(event) {
            event.preventDefault();
        }
    }
    
    

    这样,在弹出层展示时,底层区域就不能滚动了,手指的滑动事件被示例的组件吸收,就不会有页面穿透问题了。

    弹出层的自身滚动
    如果有需要在弹窗组件内自身滚动,可以考虑使用 scroll-view 组件,更好地支持内部区域的滚动。将需要滚动的内容放在 scroll-view 组件中,并且根据内容的实际高度设置 scroll-view 组件的高度即可。示例如下:

    
    <view class="popup-wrapper" catchtouchmove="preventPageScroll">
        <scroll-view scroll-y style="height: 90%;">
            <!-- 组件的内容 -->
        </scroll-view>
    </view>
    .popup-wrapper {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        background-color: rgba(0, 0, 0, 0.55);
        z-index: 9999;
    }
    methods: {
        // ...
    }
    
    

    这种方式下,scroll-view 组件内的滚动事件只会被容器组件捕获,底层区域不会接收到手指事件,也就不会出现页面穿透的问题了。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月11日

悬赏问题

  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物