亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

ios 下防止整個網頁滑動(阻尼回彈 . 瞞天過海,騙IOS,把阻尼回彈限制在滾動區div內

標簽:
iOS
<strong>下面是一个手机APP页面,分成上中下三部分,最上面和最下面是固定的,中间可以滚动。这是常见的APP布局方式。</strong>
 <style> .box{  overflow: auto;  -webkit-overflow-scrolling: touch;  /*使得div内的超出滑动具有惯性,阻尼回弹等特性,否则滑动很生涩*/}</style></head>  <body class="box" >     <div id="top" class="scroll1" style="height:50px;"></div>    <div class="scroll" style="height:calc( 100% - 100px);width:100%;overflow:auto;">     <div style="height:500px;width:100%;">      </div>       <div style="height:500px;margin-top:200px; ">      </div>      <div style="height:500px;margin-top:200px; ">      </div>       <div style="height:500px;margin-top:200px; ">      </div> </div>  <div id="bottom" class="scroll1" style="height:50px;"></div>
1<span style="font-size: 16px">运行效果如下,顶部和底部固定区域都是黄色,中间的滚动div包含了红灰相间的色块。<br><img alt="" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://img2018.cnblogs.com/blog/1334688/201810/1334688-20181014180728971-1597704554.png"><br><br></span>
1<span style="font-size: 16px"><br>在ios测试时发现基本正常,可是有以下几个问题:</span>

1.当滚动到底部(稍停几秒),再上拉的时候,整个网页就会上滑,松手后阻尼回弹。

2.当滚动到顶部(稍微停几秒),再下拉时,整个网页就下滑,松手后阻尼回弹。

3.上在顶部或底部上下滑动时,整个页面会上下滑动。松手后立即滑动中间区域,也是上下滑动(停留秒后再滑,则正常滑动中间区域)

问题1,2其实是一个问题,解决原理如下:

当滚动区滚到顶部时,手再触屏时,把把div的滚动位置向下调一点点,这样系统就会以为还没有滚到头,就会继续滑动,然后是div内的阻尼滑动,整个网页不会滑动。滚动到底部时,再触屏时,同理向上调一点。这一招欺骗手法瞒天过海把IOS骗过去了。代码如下:

复制代码

    var overscroll = function(el) {
    el.addEventListener('touchstart', function() {        var top = el.scrollTop
        ,totalScroll = el.scrollHeight
        ,currentScroll = top + el.offsetHeight; 
        if(top === 0) {
            el.scrollTop = 1;
        }else if(currentScroll === totalScroll) {
            el.scrollTop = top - 1;
        } 
    }); 
} 
 overscroll(document.querySelector('.scroll'));

复制代码

问题3,更简单,直接忽略滚动事件即可:

复制代码

document.all.bottom.addEventListener('touchmove', function(evt) { 
evt.preventDefault(); 
});

document.all.top.addEventListener('touchmove', function(evt) { 
evt.preventDefault(); 
});

复制代码

原文出处:https://www.cnblogs.com/voiceangel/p/9787227.html  

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消