移动端浮层/遮罩层内滚动文档不滚动

妹的,移动弹出浮层后,想滚动浮层内部的内容。可是发现html也跟着滚不可理喻,可恶的是 chrome 测试是没问题的。。。。。经过几番折腾 最终还是实现了产品的要求。不过安卓上貌似还有点小问题 导致html微微蠕动。将就的使吧。

来吧来吧 废话少说 上源码 代码比较菜啊。欢迎大家喷我 实现原理 借鉴了 大神 张鑫旭的案例;
style

//遮罩层
.POI--slide-summary.slide__content__bg {
    background:rgba(0,0,0,.3);
    display: none;
    height: 100%;
    position: fixed;
    top:0;
    left:0;
    width:100%;
    z-index: 11;
}
.POI--slide-summary .slide__content {
    position: absolute;
    bottom:0;
    width:100%;
}
.POI--slide-summary .slide__title {
    background: rgba(86,94,106,0.50);
    color:#fff;
    font-size:14px;
    height: 44px;
    line-height: 44px;
    text-align:center;
}
.POI--slide-summary .slide__text {
    background:#fff;
    color: #565E6A;
    font-size: 14px;
    height: 220px;
    line-height: 1.2;
    overflow-y:scroll;
    padding:20px 15px;
}
.POI--slide-summary .slide__map {
    height: 200px;
    overflow: hidden;
}
.POI--slide-summary .slide__map img {
    transform: scale(2)
}
.POI--slide-summary .slide__close {
    background: #F9FAFC;
    color: #A1ABBC;
    font-size:16px;
    height: 44px;
    line-height: 44px;
    text-align:center;
}
.POI--slide-summary.POI--slide-list .slide__list {
    background:#fff;
    height: 160px;
    overflow-y:scroll;
    padding:20px 15px;
}
.POI--slide-summary.POI--slide-list .slide__list li {
    color: #565E6A;
    font-size: 14px;
    height: 26px;
    line-height: 26px;
    text-align: center;
}
.POI--slide-summary.POI--slide-list .slide__list li.current {
    color:#EF4B4B
}
<div class="btns">
        <button id="showHour">营业时间</button>
        <button id="showSummary">详情简介</button>
        <button id="showMap">地图</button>
    </div>
    
    <div style="height: 200px;background:blue;"></div>
    <div style="height: 200px;background:green;"></div>
    <div style="height: 200px;background:yellow;"></div>
    <div style="height: 200px;background:black;"></div>
    <div style="height: 200px;background:white;"></div>

    <!-- begin 遮罩层 -->
    <div id="showSummary-con" class="POI--slide-summary slide__content__bg">
        <div class="slide__content">
            <div class="slide__title">详情简介</div>
            <div class="slide__text scroll__con">
                这里是详情简介,一兰拉面在日本猪骨拉面中首屈一指,创业五十多年来以天然的猪骨汤、特制的面条、秘传的作料酱汁而闻名,店铺从发源地福冈覆盖到小半个日本,在香港铜锣湾也有其连锁店,可见人气非同一般。除了拉面本身的味道较其他拉面好吃之外,吃面过程中不会受任何人打扰的环境也是受欢迎的原因之一。而且为了照顾来日本旅行的外国游客,有中日英等各种语言的菜单,分类详细到拉面的分量、软硬程度、汤底的浓度、油腻度等,可以选到最适合自己口味的拉面。
                这里是详情简介,一兰拉面在日本猪骨拉面中首屈一指,创业五十多年来以天然的猪骨汤、特制的面条、秘传的作料酱汁而闻名,店铺从发源地福冈覆盖到小半个日本,在香港铜锣湾也有其连锁店,可见人气非同一般。除了拉面本身的味道较其他拉面好吃之外,吃面过程中不会受任何人打扰的环境也是受欢迎的原因之一。而且为了照顾来日本旅行的外国游客,有中日英等各种语言的菜单,分类详细到拉面的分量、软硬程度、汤底的浓度、油腻度等,可以选到最适合自己口味的拉面。
                这里是详情简介,一兰拉面在日本猪骨拉面中首屈一指,创业五十多年来以天然的猪骨汤、特制的面条、秘传的作料酱汁而闻名,店铺从发源地福冈覆盖到小半个日本,在香港铜锣湾也有其连锁店,可见人气非同一般。除了拉面本身的味道较其他拉面好吃之外,吃面过程中不会受任何人打扰的环境也是受欢迎的原因之一。而且为了照顾来日本旅行的外国游客,有中日英等各种语言的菜单,分类详细到拉面的分量、软硬程度、汤底的浓度、油腻度等,可以选到最适合自己口味的拉面。
            </div>
            <div class="slide__close">关闭简介</div>
        </div>
    </div>

    <div id="showHour-con" class="POI--slide-summary POI--slide-list slide__content__bg">
        <div class="slide__content">
            <div class="slide__title">营业时间</div>
            <ul class="slide__list scroll__con">
                <li>星期一 00:00-23:00</li>
                <li class="current">星期二 停业</li>
                <li>星期三 00:00-23:00</li>
                <li>星期四 00:00-23:00</li>
                <li>星期五 00:00-23:00</li>
                <li>星期六 00:00-23:00</li>
                <li>星期日 00:00-23:00</li>
            </ul>
            <div class="slide__close">关闭营业时间</div>
        </div>
    </div>
    
    <!-- end 遮罩层 -->

script

//遮罩层内部滚动
    $.smartScroll = function(container, selectorScrollable) {
        
        if (!selectorScrollable || container.data('isBindScroll')) {
            return;
        }
        
        var isSBBrowser;
    
        var data = {
            reg : /scroll__con$/,
            isScroll:true,
            maxscroll: 0
        };
    
        container.on({
            touchstart: function () {
                var elScroll = event.target;
                var events = event.touches[0] || event;
                
                data.elScroll = elScroll;

                data.posY = events.pageY;//滑动触发时的起始值
                data.maxscroll = elScroll.scrollHeight - elScroll.clientHeight;//最大滚动值
            },
            touchmove: function () {
                try{
                    var events = event.touches[0] || event;
                    var elScrollY = data.elScroll.scrollTop;
                    var distanceY = events.pageY - data.posY;
                    //滑动结束值 减去 滑动起始值,用来判断滑动方向

                    if(!data.elScroll.className.match(data.reg) || data.maxscroll <= 0 ){
                        event.preventDefault();
                        return;
                    }
                    //向上 是否滑倒了上边界就是这里有点小问题不过可接受
                    if (distanceY > 0 && elScrollY == 0) {
                        event.preventDefault();
                        return;
                    }
            
                    // 向下是否滑到了下边界就是这里有点小问题不过可接受
                    if (distanceY < 0 && (elScrollY + 1 >= data.maxscroll)) {
                        event.preventDefault();
                        return;
                    }

                }catch(e){
                    console.log(e);
                }
            },
            touchend: function () {
                data.maxscroll = 0;
            }    
        });
    
        container.data('isBindScroll', true);
    };

    var showBox = function(dom,$html,container,selectorScrollable){
        $('#'+ dom +'-con').show().css('z-index','11');
        $html.addClass('noscroll');
        $.smartScroll(container,selectorScrollable)
    }

    var fnSlide = function(){

        var $btn = $('.btns'),
            $sBtn = $('#showSummary-con'),
            $tBtn = $('#showHour-con'),
            $mBtn = $('#showMap-con'),
            container = $('.slide__content__bg'),
            $html = $('html');
        $btn.on('click',function(e){
            showBox(e.target.id,$html,container,'.scroll__con');
        });
        $sBtn.on('click',function(e){
            e.preventDefault();
            var _this = $(this);
            if(e.target.id==='showSummary-con' || e.target.className ==='slide__close'){
                _this.hide();
                $html.removeClass('noscroll');
            }
        });
        $tBtn.on('click',function(e){
            e.preventDefault();
            var _this = $(this);
            if(e.target.id==='showHour-con' || e.target.className ==='slide__close'){
                _this.hide();
                $html.removeClass('noscroll');
            }
        });
        $mBtn.on('click',function(e){
            e.preventDefault();
            var _this = $(this);
            if(e.target.id==='showMap-con' || e.target.className ==='slide__close'){
                _this.hide();
                $html.removeClass('noscroll');
            }
        });
    }
    fnSlide();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,468评论 25 707
  • 文/大白的芳芳 婚姻是每个人一生之中的必修课,从这堂课中要学会爱与成长,学会包容与体谅,学会承担责任,学会有效沟通...
    大白的芳芳阅读 526评论 0 2
  • 今天,回家了,每次回家都挺折腾的,至少三天起的旅程。 昨天买了路上吃的,带着包,去大庆西站买火车票,没有买到,后来...
    007王小草阅读 483评论 0 1
  • 当我们有愿望时,老天就会给你机会。但当机会来时,我们如果自信拥抱,愿望就这样轻松实现了。但如果我们在机会面前退缩,...
    歪歪猫阅读 234评论 0 0