移动页面滚动穿透解决方案(荐)

移动页面滚动穿透解决方法目前有多种解决方案,我介绍下几种方案:

解决方案1:阻止冒泡。

//关键代码
$(".sliders,.modals").on("touchmove",function(event){
    event.preventDefault();
}); 

全部代码附上:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width,user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
    </head>
    <style type="text/css">
        .modals button{width:100%;margin:0 auto;height:auto;line-height:30px;border:1px solid #4185F3;color:#fff;font-size:14px;background:#4185F3;margin:0 auto}
        .modals-body{padding:30px 15px;font-size:10px;color:#666;text-align:center;background:#fff}
        .sliders{cursor:not-allowed;display:block;position:fixed;overflow:hidden;z-index:103;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:rgba(20,20,20,.8)}
        .modals{overflow-y:auto;max-height:95%;font-size:16px;z-index:103;border-radius:5px;background:#fff;width:50%;color:#333;display:block;box-shadow:0 0 3px rgba(0,0,0,.1);position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}
    </style>

    <body>
        <!--一个未知宽高的弹出框,水平垂直居中-->
        <div class="sliders"></div>
        <div class="modals">
            <div class="modals-body">
                用户信息丢失,请先登录
            </div>
            <button class="btns">确定</button>
        </div>
        <!--end-->
        <div class="list"></div>
    </body>
    <script src="build/zepto.min.js"></script>
    <script>

        for(var i = 0;i<=30;i++){
            $(".list").append("<p>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>");
        }

        //阻止防止滚动、缩放。
        $(".sliders,.modals").on("touchmove",function(event){
            event.preventDefault();
        }); 

        $(".btns").on("tap",function(){
            $(".sliders,.modals").remove();
        });

    </script>

</html>

解决方案2:通过 js 来做处理

首先,设置 body 元素 overflow:hidden 默认为隐藏。

body{overflow:hidden;}

其次,设置 JS ,再点击按钮之后,将body 的 overflow:initial 即可。

<script>

    for(var i = 0;i<=30;i++){
        $(".list").append("<p>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>");
    }

    $(".btns").on("tap",function(){
        $(".sliders,.modals").remove();

        //关键代码
        $("body").css("overflow-y","initial");

    });

</script>

解决方案3:采用第三方插件 fastclick.js 来做处理

详情查阅:http://amazeui.org/1.x/javascript/modal/


时间: 2024-10-10 16:16:42

移动页面滚动穿透解决方案(荐)的相关文章

ExtJs 4.2.1Grid行编辑后,页面滚动的解决方案

前段时间,公司里做个新玩意儿,我们开发组选用ExtJs4.2.1Mvc模式,开发过程中遇到了很多问题(避免不了不专业的需求人员提出各种一拍脑瓜子就决定的需求),经过查看api都一一解决,现在把开发过程中遇到的且已解决的问题,记录下来,供以后查看,也供新接触ExtJs的网友借鉴,描述不到位或有错误的地方,望指正!(注:下文中提到的方法均为ExtJs库中的方法,并非js原生) 因为整个项目都是运用的ExtJs的MVC,所以项目中基本都是js文件(自定义的js文件接近100个,更不用说ExtJs的库了

移动页面滚动穿透如何解决

在安卓系统的webview下写的页面,各种版本包括4.4,当弹出一个半透明全屏的弹框后,这时在PC上滚动条应该是不可用的,但是在webview下,在弹框上用手指滑动,弹框下面的页面是会跟着动的. 在segmentfault看到了讨论,记录一下,免得自己到时候找不到相应的答案.

h5页面弹窗滚动穿透的思考

可能我们经常做这样的弹窗对吧,兴许我们绝对很简单,两下搞定: 弹窗的页面结构代码: <!-- 弹窗模块 引用时移除static_tip类--> <div class="mask" ontouchstart = "return false" style="display:none"></div> <div class="main_venue_tip" style="displa

移动端web页面滚动不流畅,卡顿闪烁解决方案

1.ios端的-webkit-overflow-scrolling属性可控制页面滚动效果,设置如下实现惯性滚动和弹性效果: -webkit-overflow-scrolling: touch 2.position属性导致的页面滚动不流畅问题: <div style="overflow-x: hidden; overflow-y: auto; position: absolute; height: 200px;"> <div style="position:

Javascript实现页面滚动时导航智能定位

遇到的问题: 在做官网的时候,需要滚动定位的区块的图片不确定,无法确定用户浏览区域对应的模块导航 之前的解决方案是: 通过定位滚动条的位置来判断用户浏览区域对应的模块导航,这种方法的弊端是,区块的高度不确定时就无法计算滚动条的位置来判断: 优化方案: 页面中会有多个模块,每个模块对应一个导航,当页面滚动到某个模块时,对应的模块导航需要加上一个类用于区分当前用户所浏览区域. 以下是DEMO <!-- html --><div class="container">

如何解决滚动穿透问题

什么是滚动穿透 在弹框上滑动时,会发现弹框下面的内容跟着在滚动,这个就是滚动穿透问题. 在 PC 端,通过在 body 上添加  overflow:hidden;  可以解决这个问题,但是该方法在移动端是无效的,所以我们通常意义上的滚动穿透指的都是移动端. 解决方案 方案一:position: fixed; body.modal-open { position: fixed; height: 100%; } 通过为body添加 fixed 属性禁止body中其他元素滚动,但是会导致 body 中

移动端之模态框滚动穿透问题

相信各位小伙伴利用H5做移动端应用时,在写弹出层时肯定用到过滚动穿透问题,虽然页面加了背景遮罩,滑动页面时,如若页面滚在滚动条,底部仍然可以滑动.遇到这种问题,第一想到的可能是能否监听弹出层的显示与隐藏,在监听函数中做处理:一般有以下两种处理方式: 1.禁止body的touchmove事件 1 function handler(e){e.preventDefault();} 2 3 export function closeTouch(){ 4 document.getElementsByTag

jquery页面滚动显示浮动菜单栏锚点定位效果

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <title>jQuery

js页面滚动时层智能浮动定位实现:

案例展示: 第一个:每个人都有看过的淘宝页面: 案例就不多说了,有兴趣的可以多去找找, 这样的智能浮动效果还是不错的,挺方便. 基本的实现原理: 首先有一个默认状态就是没有滚动的时候,什么事情也不用做,定位可以是absolute,也可以是stati,fixed,relartive 这些都可以.我们主要需要关注的是当浏览器滚动的时候,(要浮动的块)要移除浏览器界面视区的时候,修改其position属性,让其浮动在窗口的上沿显示就可以了.最好的position属性就是fixed了,可以在IE6+和其