移动端下拉刷新与页面内滑动冲突问题 iscroll 固定行表头 苹果下拉反弹

此方法在安卓6的自带下拉刷新的APP内无效。

做移动app项目时,用的是app内嵌webview的方法,遇到问题。

在安卓6中,app原生自带下拉刷新,与界面内的下滑冲突。

开始考虑通过在touchmove时阻止默认事件解决,但event.preventDefault()是会把所有事件都阻止了。

即使阻止完再移除监听事件,也不行,这是个持续的过程,因为无法改变APP的原生内容。此路不通。

建议让开发app的人员解决这个问题。如果此路不通,考虑其他方法。

考虑用iScroll插件解决,插件iScroll的原理是通过css的transform效果实现。

iScroll 文档:http://caibaojian.com/iscroll-5/

demo:固定表头滚动(移动端)如果表格很长,不止需要纵向滚动,还需要横向和表头一起滚动。

html:                

<head><script src="js/iscroll-probe.js"></script></head>
<div id="c">
    <div class="m">sdmdonifoinvomsldmkcoerijoaopmr</div>
    <div class="f">
        <ul class="d">
            <li>a</li>
            <li>b</li>
            <li>c</li>
            <li>d</li>
            <li>e</li>
        </ul>
    </div>
</div>

css:

这里 body 要加属性 position:fixed; 防止苹果手机下拉反弹问题。

这里 f 的 overflow-y 要设置成hidden,因为苹果手机兼容问题。

html,body,div,ul,li{
    margin:0;
    padding:0;
}
#c{
    position:relative;
    width:500px;
    background-color: #f5e79e;
    overflow-y:hidden;
    overflow-x:auto;
}
.m{
    width:600px;
    height:50px;
    background-color: #2d6ca2;
}
.f{
    position:relative;
    width:600px;
    height:400px;
    background-color: #2ECC40;
    overflow-y:auto;
}
.d{
    width:600px;
    height:800px;
    background-color: #cccccc;
}
li{
    display:block;
    height:100px;
    list-style: none;
    font-size:28px;
}

js:

var myScroll=new IScroll(".f",{
    scrollbars: true,//显示滚动条
    bounce:false,//反弹动画不显示
    eventPassthrough:'horizontal',//横向滚动条保持原生,纵向滚动条使用iScroll
    fadeScrollbars:true,//淡入淡出
});

自己做过尝试,通过阻止默认事件,改变要滚动元素的margin-top或者top,来做滚动效果,但在touchmove时,没能精准计算出移动距离。做个纪念吧。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值