解决h5页面点击原生弹窗后,弹框下内容滑动

本文介绍了如何通过JavaScript实现页面触摸滑动的禁止与解除,适用于移动端开发中控制用户体验的场景。方法包括stop()阻止滑动和move()恢复滚动功能,适合快速上手操作。
stop(){
        var mo=function(e){e.preventDefault();};
        document.body.style.overflow='hidden';
        document.addEventListener("touchmove",mo,false);//禁止页面滑动
    },
    /***取消滑动限制***/
move(){
        var mo=function(e){e.preventDefault();};
        document.body.style.overflow='';//出现滚动条
        document.removeEventListener("touchmove",mo,false);
        this.selfTestDialogVisible=false;         
}

直接调用方法即可!

提供的引用中未提及在Vue3和Uniapp的H5项目中实现地图弹窗上中下滑动效果的方法。不过,可以通过以下思路和示例代码来实现: ### 思路 1. **HTML结构**:创建一个地图容器和一个弹窗容器。 2. **CSS样式**:设置弹窗的初始位置和过渡效果。 3. **JavaScript逻辑**:通过监听触摸事件,根据触摸的位置和方向来移动弹窗。 ### 示例代码 ```vue <template> <div id="app"> <!-- 地图容器 --> <div class="map-container"></div> <!-- 弹窗容器 --> <div class="popup" :style="{ transform: `translateY(${popupY}px)` }" @touchstart="onTouchStart" @touchmove="onTouchMove" @touchend="onTouchEnd"> <div class="popup-content"> <!-- 弹窗内容 --> <h2>地图弹窗</h2> <p>这是弹窗内容。</p> </div> </div> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; // 弹窗的初始位置 const popupY = ref(300); // 触摸开始时的Y坐标 const startY = ref(0); // 触摸移动时的偏移量 const offsetY = ref(0); // 触摸开始事件 const onTouchStart = (e: TouchEvent) => { startY.value = e.touches[0].clientY; }; // 触摸移动事件 const onTouchMove = (e: TouchEvent) => { const currentY = e.touches[0].clientY; offsetY.value = currentY - startY.value; popupY.value = 300 + offsetY.value; }; // 触摸结束事件 const onTouchEnd = () => { // 根据偏移量判断是否需要将弹窗收起或展开 if (offsetY.value > 100) { popupY.value = 600; // 收起弹窗 } else if (offsetY.value < -100) { popupY.value = 0; // 展开弹窗 } else { popupY.value = 300; // 恢复初始位置 } offsetY.value = 0; }; </script> <style scoped> .map-container { width: 100%; height: 100vh; background-color: #f0f0f0; } .popup { position: fixed; bottom: 0; left: 0; width: 100%; height: 300px; background-color: white; transition: transform 0.3s ease; } .popup-content { padding: 20px; } </style> ``` ### 代码解释 1. **HTML结构**:创建了一个地图容器和一个弹窗容器。 2. **CSS样式**:设置了弹窗的初始位置和过渡效果。 3. **JavaScript逻辑**:通过监听触摸事件,根据触摸的位置和方向来移动弹窗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值